Les activity sont annotées @EActivity Des annotations existent pour tous les composants classiques : @EService @EReceiver @EApplication @EFragment @EProvider ...
être utilisés directement dans le constructeur ou le onCreate() @AfterInject : les attributs non-vues sont injectés @AfterViews : les vues sont instanciées @AfterInject public void doSomethingAfterInjection() { } @AfterViews public void updateTextWithDate() { result.setText("Date: " + new Date()); }
: Cette classe peut alors être injectée : @EBean public class MyClass { } @EActivity public class MyActivity extends Activity { @Bean MyClass myObject; }
Génération de code à la compilation Chaque classe annotée aura une sous- classe générée : public final class TranslateActivity_ extends TranslateActivity { ! // Ici sera généré tout le code pas jojo que l'on ne veut pas écrire }
: 1.Ajouter dans /libs androidannotations-X.X.X-api.jar 2.Ajouter ce jar au build path 3.Ajouter dans un autre dossier /compile-libs le jar androidannotations-X.X.X.jar 4.Dans les project properties : Java Compiler > Annotation Processing Enable annotation processing Java Compiler > Annotation Processing > Factory Path Ajouter le processeur androidannotations-X.X.X.jar
dans la logique AndroidAnnotations. • Puis très vite addictif... • Un code beaucoup plus lisible car plus light • Entraîne à modulariser le plus possible son code • Debugging : aucune différence. Le code généré est accessible
et de tout type d’objets. + Injection plus puissante que AndroidAnnotations - Les injections se font au runtime ‣ Moins bonnes performances - Activités doivent hériter de RoboActivity ‣ Problème pour utiliser d’autres librairies
Roboguice, offre plus d’options sur les injections de dépendances. Les injections se font aussi au runtime. Pas orienté Android mais très light. A fast dependency injector for Android and Java.
au maximum le langage : @AllArgsConstructor public class MyClass { ! @Getter @Setter private int age = 10; ! @Setter(AccessLevel.PROTECTED) private String name; }
d’événements : Otto An enhanced Guava-based event bus with emphasis on Android support. Bus Post Subscribe bus.post(new AnswerAvailableEvent(42)); @Subscribe public void answerAvailable(AnswerAvailableEvent event) { }