2014-04-24 18 views
9

Ist es möglich, Objekt durch Dolch in android.app.IntentService ausgesetzt zu injizieren? Wenn ja, wie kann ich das tun?Dolch - android.app.IntentService mit @Inject

Ich möchte so etwas haben.

public class SomeService extends android.app.IntentService { 

@Inject 
Synchronizer synchronizer; 

public SomeService(String name) { 
    super(name); 
} 

@Override 
protected void onHandleIntent(Intent intent) { 
    synchronizer.doSynch(); 
} 

}

Antwort

22

Von einem Dolch Sicht IntentService ist von jeder anderen Klasse nicht anders.

Injection kann so aussehen (ich nehme an, dass Ihre Anwendung eine Instanz von ObjectGraph hat und macht die Methode injizieren). Vergessen Sie natürlich nicht, die Klasse in eine Liste injizierter Klassen in Ihrer Modul Definition hinzuzufügen.

public class SomeService extends android.app.IntentService { 

    @Inject 
    Synchronizer synchronizer; 

    public SomeService(String name) { 
    super(name); 
    } 

    @Override 
    public void onCreate() { 
    super.onCreate(); 
    ((YourApplication) getApplication()).inject(this); 
    } 

    @Override 
    protected void onHandleIntent(Intent intent) { 
     synchronizer.doSynch(); 
    } 
} 
+2

Vielen Dank. Genau das habe ich gesucht. Du hast recht. Ich kann hinzufügen, dass Sie die Methode .inject in der onCreate() -Methode aufrufen müssen. Aber die ganze Idee funktioniert als Charme. – lstrzelecki

+2

Sie können keine Anwendung in der Konstruktormethode erhalten. Nur in onCreate. – onCreate

+4

'getApplication' kann innerhalb des Konstruktors' null' zurückgeben. Wenn dies der Fall ist, können Sie die onCreate-Methode überschreiben und Ihre Instanz hier injizieren. – htulipe