qu'est-ce que les Annotations Android et pourquoi nous utilisons les Annotations Android?

je veux savoir à propos de Android Annotations, il est le meilleur moyen de les utiliser dans tous les projets android?.

si correct, comment l'implémenter. Est-il un bon tuto pour ça?

Si c'est une mauvaise façon. Quel est le dessin des Annotations Android?

Merci d'avance pour l'aide.

23
demandé sur rastadrian 2015-09-09 17:23:54

5 réponses

Annotations Android est un framework piloté par annotation qui vous permet de simplifier le code dans vos applications et de réduire le boilerplate de modèles communs, tels que la mise en place d'écouteurs de clics, l'exécution de l'ui/background thread exécutions, etc.

Vous pouvez passer de l'avoir quelque chose comme ceci:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final TextView descriptionTextView = (TextView) findViewById(R.id.tv_description);
        final Button hideButton = (Button) findViewById(R.id.btn_hide);
        hideButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                descriptionTextView.setVisibility(View.INVISIBLE);
            }
        });
    }
}

À quelque chose comme ceci:

@EActivity(R.layout.activity_main)
public class MainActivity extends AppCompatActivity {

    @ViewById(R.id.tv_description)
    TextView mDescriptionTextView;

    @Click(R.id.btn_hide)
    protected void onHideButtonClick() {
        mDescriptionTextView.setVisibility(View.INVISIBLE);
    }
}

Comment ça marche

vous annotez vos activités et components, le processeur d'annotations génère alors des classes (au moment de la compilation) qui prolongent vos activités et components (i.e. vos activités ne peuvent pas être finales) avec un suffixe de soulignement par défaut, donc si vous avez MainActivity, maintenant vous aurez également un MainActivity_ classe.

cette nouvelle classe contient un code boilerplate bien écrit qui fait tout ce que l'annotation spécifie.

comment mettre en oeuvre

j'ai écrit ce tutoriel sur la façon de intégrer les Annotations Android et même inclure un exemple sur la façon dont les tests d'intégration sont mis à jour,voir ici.

ce tutoriel est valide à partir d'aujourd'hui, en utilisant Android Studio ~1.5.1, et il essaie d'expliquer un peu sur la façon dont l'interne fonctionne.

Devriez-vous utiliser?

je dirais que si vous avez un petit-projet moyen c'est très bien. il rendra votre code plus facile à lire. Mais si votre demande est plus grande et contient beaucoup de flux de navigation avec des cycles de vie d'activités/composants complexes, il peut obtenir un peu difficile à mettre en œuvre ou difficile de déboguer et de comprendre les erreurs si quelque chose n'est pas correctement annotés.

en raison de la façon dont les Annotations Android fonctionnent, ils se sont intégrés dans le cycle de vie et le faire,vous êtes maintenant dépendante de leur cycle de vie (par exemple si vous annotez vos vues avec @ViewById, alors vous ne pouvez pas référencer dans onCreate(), vous besoin de faire une méthode et l'annoter avec @AfterViews et quand cette méthode est exécutée alors vos vues sont prêtes à être utilisées). Ce n'est pas nécessairement un problème, vous avez juste besoin d'avoir une bonne compréhension des comportements D'Android et bien, Annotations Android comportements ainsi.

En résumé, comme dans toute bibliothèque, si vous comptez sur elle, bien vous en dépendent, de sorte que vous pourriez aussi bien comprendre très bien comment il fonctionne. Votre projet dépend maintenant de quelqu'un d'autre.

24
répondu rastadrian 2017-08-17 17:29:12

Je n'utilise plus D'Annotations Android, plus maintenant. Quand j'ai utilisé cette bibliothèque, elle était boguée et a fait du débogage un cauchemar. Un autre inconvénient est qu'elle réduit la portabilité de votre code. Si vous travaillez seul sur le projet, alors ce n'est pas grave, vous n'avez pas ce problème, mais quand vous travaillez en équipe, vous devez y réfléchir à deux fois.

Si vous voulez l'utiliser, il ya beaucoup de tutoriels droit sur leur site.

Une alternative: Si vous voulez diminuez la quantité de code tout en le rendant très facile à utiliser et à comprendre, je vous suggère le Couteau À Beurre bibliothèque. J'utilise beaucoup et je n'ai rencontré aucun bogue jusqu'à présent. Très facile à utiliser et à lire.

5
répondu DDsix 2016-03-07 12:08:28

Annotations Android est une bibliothèque qui "autogénère" code pour nous en utilisant des attributs ou des anotations comme @EActivity, @ViewById, @OnClick. Il est destiné à faciliter et à réduire le temps de codage.

"AndroidAnnotations est un framework Open Source qui accélère le développement D'Android. Il prend soin de la plomberie, et vous permet de vous concentrer sur ce qui est vraiment important. En simplifiant votre code, il en facilite la maintenance."

(Documentation ici: https://github.com/excilys/androidannotations/wiki)

Mais... Nous ne l'utilisons pas, je suis entièrement d'accord avec la réponse de DDsix. Utilisez des principes solides et codez ce qui devrait être codé quand et où il devrait être...

3
répondu Juan 2016-03-09 07:00:33

Annotations Android est une bibliothèque tierce partie qui a été fait pour être tout en un seul outil pour Android. Sa capacité d'injection de dépendance, la manipulation de fils, et plus encore. Je ne recommande pas de l'utiliser; c'est buggy, et instable. Dans mon travail actuel, je travaille sur un projet et ma tâche est de supprimer Android Annotations. Je voudrais suggérer à l'aide de la Dague à 2, Butterknife, et RxJava

2
répondu Zeyad Gasser 2016-03-08 21:39:04

Voici l'exemple avec Android Studio.

  1. créer un projet Android avec le modèle" Empty Activity".
  2. éditer le project_root / build.gradle

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:1.5.0'
    ==>     classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
        }
    }
    
    allprojects {
        repositories {
            jcenter()
    ==>     maven {
    ==>         url = 'https://oss.sonatype.org/content/repositories/snapshots'
    ==>     }
        }
    }
    
  3. éditer l'application / Construire.gradle

    apply plugin: 'com.android.application'
    apply plugin: 'android-apt'  <============
    
    android {
        compileSdkVersion 23
        buildToolsVersion "23.0.2"
    
        defaultConfig {
            applicationId "com.just.myapplication"
            minSdkVersion 19
            targetSdkVersion 23
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        testCompile 'junit:junit:4.12'
        compile 'com.android.support:appcompat-v7:23.1.1'
    
    ==> apt "org.androidannotations:androidannotations:4.0-SNAPSHOT"
    ==> compile 'org.androidannotations:androidannotations-api:4.0-SNAPSHOT'
    }
    
  4. Ajouter un TextView et un bouton dans la mise en page principale, activity_main.xml

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Not Click Yet"
        android:id="@+id/textView"/>
    
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:id="@+id/button"
        android:text="Click"
        android:layout_below="@+id/textView" />
    

  5. changer le nom de l'activité en "MainActivity_" dans AndroidManifest.xml

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
    ==> <activity android:name=".MainActivity_">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
    
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>
    

  6. maintenant, votre activité principale.java peut être simplifié comme ci-dessous

    package com.just.myapplication;
    
    import android.support.v7.app.AppCompatActivity;
    import android.widget.TextView;
    
    import org.androidannotations.annotations.Click;
    import org.androidannotations.annotations.EActivity;
    import org.androidannotations.annotations.ViewById;
    
    @EActivity (R.layout.activity_main)
    public class MainActivity extends AppCompatActivity {
    
        @ViewById(R.id.textView)
        TextView mText;
    
        @Click
        void button() {
            mText.setText("Button Clicked!");
        }
    }
    
  7. essayez de l'exécuter avec un dispositif ou un émulateur pour voir comment simple il fonctionne.

2
répondu Jared Tsai 2016-03-09 07:43:00