1. Wir haben diesmal 2 Gewinnspiele zeitgleich für euch - Gewinne einmal ein UMI Plus E - Beim 2ten könnt ihr ein Nomu S30 gewinnen!
  1. ko5tik, 05.09.2011 #1
    ko5tik

    ko5tik Threadstarter Android-Experte

    Kleine aber feine DI für android. MItstreiter willkommen.

    1. Keine externe Abhängigkeiten
    2. Leicht (sonst macht es kein sinn)
    3. Mit Annotationen gesteuert
    4. Mit 2 Scopes ( onCreate() , onResume() / onPause() )
    5. Mit Injection von der Preferences

    .... Weitere Ideen?

    Projekt gerade gestartet, Mitstreiter willkommen:

    https://github.com/ko5tik/andject
     
  2. ko5tik, 06.09.2011 #2
    ko5tik

    ko5tik Threadstarter Android-Experte

    Jetzt geht bereits folgendes:

    In Activity:
    Code:
    
        class WithInjectableViews extends Activity {
            // shall be injected
            @View(id = R.id.irgendwas)
            private android.view.View asView;
            @View(id = R.id.irgendwasanderes)
            private Button button;
    
            public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 setContentView(R.layout.main);
    
                 Injector.startActivity(this);
        }
    
    
    Und alle views sind initialisiert. Annotation name is etwas unglücklich - Vorschläge sind willkommen.
     
  3. swordi, 06.09.2011 #3
    swordi

    swordi Gewerbliches Mitglied

    hmm was bringt das ganze?
     
  4. ko5tik, 06.09.2011 #4
    ko5tik

    ko5tik Threadstarter Android-Experte

    Es bringt nichts, es nimmt eher weg :

    scanArea = (ImageView) findViewById(R.id.scanarea);

    Ist nicht mehr notwendig. Weitere injections folgen
     
  5. TheDarkRose, 06.09.2011 #5
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Statt @View lieber dem Standard @Inject folgen.

    @Swordi: Google mal nach Dependency Injection, bevor du solche Fragen stellst.
     
  6. ko5tik, 06.09.2011 #6
    ko5tik

    ko5tik Threadstarter Android-Experte

    Namenskollision mit J2EE Annotation ist uncool, zumal die nicht bei Android gibt. Frage ist was besser ist - viele Annotationen, oder Logic im injector
     
  7. swordi, 06.09.2011 #7
    swordi

    swordi Gewerbliches Mitglied

    Ok

    ich habe mir dafür ein Eclipse Plugin getippt, welches mit einem Klick sämtliche findViewByIds erzeugt und separat abspeichert :)

    da brauch ich genau noch 0 Zeilen selbst tippen
     
  8. TheDarkRose, 07.09.2011 #8
    TheDarkRose

    TheDarkRose Gewerbliches Mitglied

    Logik im Injector natürlich. Und @Inject kannst du schon verwenden. Jedes DI Framework macht das. Spring, Guice, etc.

    Edit: Und wie sollte da eine Kollision zusammenkommen? Die Annotation wäre ja in deinem Package. Und Java EE (J2EE gibts nimma :p) gibt es ja nicht auf Android ^^
     
  9. ko5tik, 08.09.2011 #9
    ko5tik

    ko5tik Threadstarter Android-Experte

    Ok, erste Tests. Allein die Injection von Views hat code etwas Schrumpfen lassen. Sowohl in Zeilenmenge im onCreate() als auch apk Große. Gestrippte Version von Bibliothek ist zur Zeit etwa 3KB
     

Diese Seite empfehlen