für meine App habe ich ein Framework für alle Netzwerkaufrufe an eine externe API erstellt. Ich setze alles in "Dienste" wie: UserService
, MessageService
usw. Also jetzt wenn ich eine Netzwerkmethode aufrufen will kann ich das nicht im UI-Thread meiner Activity
machen also habe ich eine AsyncTask
gemacht und alles war einfach in Ordnung =)Android: Alternativen zu AsyncTask?
Aber jetzt möchte ich etwas wie geben die Methode, um die AsyncTask
ausführen, so dass ich keine AsyncTask
für jede Methode meines Netzwerk-Framework schreiben muss. Anstatt also so etwas wie dieses aufweist:
public class NetworkTask extends AsyncTask<UserService, Void, Void> {
@Override
protected Void doInBackground(UserService... params) {
UserService userService = params[0];
userService.getUser();
return null;
}
}
Ich möchte etwas mehr „abstrakt“, so der AsyncTask
nicht braucht die „getUser“ Methode wissen? Aber ich finde keine Idee, wie das geht ... Vielleicht ist die AsyncTask dafür sowieso nicht gut?
Es ist nicht ganz klar, was Sie fragen, aber 'IntentService' wird häufig als Alternative zu' AsyncTask' verwendet. – pathfinderelite
Ich bin mir nicht sicher, ob ich Sie auch richtig verstehe, aber eine Alternative zu AsyncTask sind Loader, eigentlich Sie sollte sie bevorzugen. http://developer.android.com/guide/components/loaders.html –
Ja, tut mir leid, ich weiß nicht, wie man das richtig ausdrückt, also war die Suche im Web auch nicht hilfreich. Ich versuche es noch einmal zu erklären: in der Methode "doInBackground" möchte ich "userService.getUser" nicht explizit aufrufen, da es viele andere Methoden und Dienste gibt, die Netzwerkaufrufe durchführen und ich sie nicht auf dem Main ausführen kann/UI Thread brauche ich zB eine AsyncTask. Aber ich möchte nur eine AsyncTask für jede Netzwerkmethode haben ... –