/ / V rámci aktivity používajte jednu inštanciu AsyncTask - android-asynctask

Použite jednu inštanciu aplikácie AsyncTask v rámci celej aktivity - android-asynctask

Mám niekoľko AsyncTask zriadené ako jednotlivé triedy. Opakovane ich používam v celej svojej aplikácii. Zaujímalo by ma, na miestach, kde to isté AsyncTask môže byť potrebných viac ako jeden, je možné použiť jednu inštanciu tohto zvyku AsyncTask trieda viackrát? Toto je naozaj kozmetický problém, pretože mi prekáža, že mám nadbytočné časti kódu, najmä keď AsyncTask používa spätné volanie na komunikáciu s počiatočnou činnosťou.

Snažil som sa to urobiť týmto spôsobom -

MyTask task = new MyTask(new someCallBackListener){

@Override
public void taskDone(boolean youDone){

}
});

A potom v mojej činnosti len volanie

task.execute(params);

Zdá sa, že to funguje prvýkrát, ale nemôžem to vykonať viackrát. Naozaj stačí inicializovať novú úlohu vždy, keď ju chcem použiť?

odpovede:

2 pre odpoveď č. 1

Asynctask môže byť vykonaný iba raz podľa dokumentácie pre Android tu(časť Pravidlá vlákna), ktorá hovorí

Úlohu je možné vykonať iba raz (výnimka bude vyvolaná, ak a pokus o druhé vykonanie.)

Nie je teda možné znova použiť inštanciu AsyncTask. Ďalej toto Takže odkaz by vám pomohol!


1 pre odpoveď č. 2

Aj keď nemôžete použiť dvakrát tú istú inštanciu, myslím, že by ste mohli opätovne použiť implementáciu spätného volania vytvorením inštancie týmto spôsobom

new MyTask(this).execute(params);

a implementácia spätného volania do aktivity alebo fragmentu, ako je táto

public class SomeActivity extends Activity implements MyTask.someCallBackListener {

//All the Activity code

public void taskDone(boolean youDone) {

}
}

Týmto spôsobom môžete vytvoriť viac inštancií svojho AsyncTask bez tých nadbytočných častí kódu, ktoré vás obťažujú.