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,880 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,880
On SlideShare
0
From Embeds
0
Number of Embeds
181
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

×