Ich bin relativ neu (ish) zu Java ..Android Klasse mit verschachtelten AsyncTask
ich eine Android-App schreibe, und jetzt werde ich wieder über meinen Code und aufzuräumen und die Einhaltung meiner Codierungsstruktur zu einer Best-Practice-Stil.
Ich erstelle Methoden und Klassen, wie ich es für richtig halte, um die zahlreichen Mengen doppelten Codes zu vermeiden, die ich produziert habe. Ich habe versucht, eine Klasse zu erstellen (z. B. HeavyStuff.java), die mehrere AsyncTask-Methoden enthält (z. B. MyTask1 und MyTask2). Wenn ich die Klasse von einer Aktivität aus anrufe, möchte ich MyTask1 irgendwann ausführen, und an einem anderen Punkt möchte ich MyTask2 ausführen. Ich versuche, die folgenden jeweils zu verwenden:
HeavyStuff.MyTask1 myTask1 = new HeavyStuff.MyTask1();
myTask1.execute();
Und
HeavyStuff.MyTask2 myTask2 = new HeavyStuff.MyTask2();
myTask2.execute();
Das Problem ist, ich erhalte eine Fehlermeldung, dass „HeavyTest ist keine einschließenden Klasse“. Meine Klasse sieht wie folgt aus:
package com.wizzkidd.myapp;
import android.os.AsyncTask;
public class HeavyStuff {
public class MyTask1 extends AsyncTask<String, String, String> {
//...
//...
}
public class MyTask2 extends AsyncTask<String, String, String> {
//...
//...
}
}
Die Klasse auch in vollem Umfang hier zu sehen ist: http://hastebin.com/yahihokupu
Was mir fehlt, was erforderlich ist die Klasse eine „umschließenden Klasse“ zu machen.
----- ----- EDIT
Ich habe in der Antwort gesucht, die als mögliches Duplikat auf meine Frage gegeben wurde, und es funktioniert nicht. Die gegebene Antwort empfiehlt, static
für meine innere Klasse zu verwenden, aber das funktioniert nicht für mich.
Ich habe jedoch festgestellt, dass ich das tun kann:
HeavyStuff.MyTask1 myTask1 = new HeavyStuff().new MyTask1();
myTask1.execute();
Es funktioniert, aber was sind die Auswirkungen (falls vorhanden), wenn es, wie dies zu tun? Ist es eine schlechte Übung?
Mögliches Duplikat [Ist das nicht ein umschließenden Klasse Java] (http://stackoverflow.com/questions/20252727/ist-nicht-einschließende-Klasse-Java) – earthw0rmjim