Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
AndroidAnnotations    Simple and powerful Android code!    sponsorisé par                  eBusiness Information, groupe E...
SPEAKERS    • Pierre-Yves RICAU (@Piwai)    • Alexandre THOMAS (@AleksThomas)jeudi 8 mars 12
CE SOIR    • Dev Android, les trucs pas sexy    • AndroidAnnotations à la rescousse!    • Live codingjeudi 8 mars 12
ANDROIDjeudi 8 mars 12
jeudi 8 mars 12
APPLICATIONS SÉRIEUSESjeudi 8 mars 12
Activity = God Objectjeudi 8 mars 12
Activity = God Objectjeudi 8 mars 12
POURQUOI ?jeudi 8 mars 12
ASYNCTASK                  	   void doSomeCrazyStuff(Param param) {                  	   	 new AsyncTask<Param, Progress, ...
TextView myTextView = (TextView) findViewById(R.id.someId);   NotificationManager notificationManager =       (Notificatio...
ET SI VOTRE CODE RESSEMBLAIT                     À ÇA ?jeudi 8 mars 12
SIMPLER VIEW HANDLING                  @EActivity(R.layout.main)                  public class EditActivity extends Activi...
SIMPLER EVENT HANDLING                  @EActivity(R.layout.main)                  public class EditActivity extends Activ...
SIMPLER THREADING                  @EActivity(R.layout.main)                  public class EditActivity extends Activity {...
REST CLIENT                  @Rest("http://www.stuff.com")                  public interface StuffClient {                ...
INJECTION DE DÉPENDANCES                  @EBean                  public class SomeBean {                  	 @Bean        ...
TOUT ENSEMBLE!          @EActivity(R.layout.main)          public class EditActivity extends Activity {          	 @ViewBy...
TAKE THAT, ANDROID GOD!jeudi 8 mars 12
COMMENT ?    •   Java 6 Annotation Processor    •   Génération de code à la compilation    •   Exécuter automatiquement pa...
SOUS-CLASSE GÉNÉRÉE                  public final class EditActivity_ extends EditActivity                  {             ...
PIÈGES CLASSIQUES            <activity android:name=".EditActivity_" />            startActivity(new Intent(this, EditActi...
AVANTAGES    • Compile          time = no runtime overhead    • Code          debuggable & readable    • No          vendo...
OPEN SOURCEjeudi 8 mars 12
PRODUCTIVITÉ                        VuzZz                        Quality of life, Geolocalized.                  Développé...
CODE PROPRE                  Live coding!      Nettoyage de printempsjeudi 8 mars 12
QUESTIONS?      • http://androidannotations.org      • @AndAnnotationsjeudi 8 mars 12
Upcoming SlideShare
Loading in …5
×

Prez android annotations

1,980 views

Published on

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Prez android annotations

  1. 1. AndroidAnnotations Simple and powerful Android code! sponsorisé par eBusiness Information, groupe Excilysjeudi 8 mars 12
  2. 2. SPEAKERS • Pierre-Yves RICAU (@Piwai) • Alexandre THOMAS (@AleksThomas)jeudi 8 mars 12
  3. 3. CE SOIR • Dev Android, les trucs pas sexy • AndroidAnnotations à la rescousse! • Live codingjeudi 8 mars 12
  4. 4. ANDROIDjeudi 8 mars 12
  5. 5. jeudi 8 mars 12
  6. 6. APPLICATIONS SÉRIEUSESjeudi 8 mars 12
  7. 7. Activity = God Objectjeudi 8 mars 12
  8. 8. Activity = God Objectjeudi 8 mars 12
  9. 9. POURQUOI ?jeudi 8 mars 12
  10. 10. ASYNCTASK void doSomeCrazyStuff(Param param) { new AsyncTask<Param, Progress, Void>() { @Override protected Void doInBackground(Param... params) { Param myParam = params[0]; publishProgress(new Progress()); mySuperDownloader.downloadStuff(myParam); return null; } protected void onProgressUpdate(Progress... values) { Progress myProgress = values[0]; updateProgress(myProgress); }; protected void onPostExecute(Void result) { // ... }; }.execute(param); }jeudi 8 mars 12
  11. 11. TextView myTextView = (TextView) findViewById(R.id.someId); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); findViewById(R.id.textView).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { handler.postDelayed(new Runnable() { @Override public void run() { // ... } }, 500); } });jeudi 8 mars 12
  12. 12. ET SI VOTRE CODE RESSEMBLAIT À ÇA ?jeudi 8 mars 12
  13. 13. SIMPLER VIEW HANDLING @EActivity(R.layout.main) public class EditActivity extends Activity { @ViewById(R.id.titleTextView) TextView title; @ViewById EditText editText; @AfterViews void initTitle() { title.setText("42"); } }jeudi 8 mars 12
  14. 14. SIMPLER EVENT HANDLING @EActivity(R.layout.main) public class EditActivity extends Activity { @Click(R.id.downloadButton) void startDownloading() { } @Click void myButtonClicked() { } }jeudi 8 mars 12
  15. 15. SIMPLER THREADING @EActivity(R.layout.main) public class EditActivity extends Activity { @Background void doSomeBackgroundWork() { } @UiThread void updateUI() { } }jeudi 8 mars 12
  16. 16. REST CLIENT @Rest("http://www.stuff.com") public interface StuffClient { @Get("/stuff/{userId}?search={search}") Stuff getStuff(String search, String userId); @Post("/stuff/{userId}") void updateStuff(Stuff stuff, String userId); }jeudi 8 mars 12
  17. 17. INJECTION DE DÉPENDANCES @EBean public class SomeBean { @Bean SomeOtherBean dependency1; }jeudi 8 mars 12
  18. 18. TOUT ENSEMBLE! @EActivity(R.layout.main) public class EditActivity extends Activity { @ViewById EditText searchInput; @RestService RestClient restClient; @Bean Datastore datastore; @Click void downloadButtonClicked() { doSomeBackgroundWork(searchInput.getText().toString()); } @Background void doSomeBackgroundWork(String search) { Stuff stuff = restClient.getStuff(search); datastore.saveStuff(stuff); updateUI(stuff); } @UiThread void updateUI(Stuff stuff) { // Show stuff } }jeudi 8 mars 12
  19. 19. TAKE THAT, ANDROID GOD!jeudi 8 mars 12
  20. 20. COMMENT ? • Java 6 Annotation Processor • Génération de code à la compilation • Exécuter automatiquement par javac AndroidAnnotations Simple and powerful Android code!jeudi 8 mars 12
  21. 21. SOUS-CLASSE GÉNÉRÉE public final class EditActivity_ extends EditActivity { // Ugly Android code goes here }jeudi 8 mars 12
  22. 22. PIÈGES CLASSIQUES <activity android:name=".EditActivity_" /> startActivity(new Intent(this, EditActivity_.class)); EditActivity_.intent(this).start();jeudi 8 mars 12
  23. 23. AVANTAGES • Compile time = no runtime overhead • Code debuggable & readable • No vendor lock-in!jeudi 8 mars 12
  24. 24. OPEN SOURCEjeudi 8 mars 12
  25. 25. PRODUCTIVITÉ VuzZz Quality of life, Geolocalized. Développée en 48hjeudi 8 mars 12
  26. 26. CODE PROPRE Live coding! Nettoyage de printempsjeudi 8 mars 12
  27. 27. QUESTIONS? • http://androidannotations.org • @AndAnnotationsjeudi 8 mars 12

×