これはどうしたらいいかわからないものです。基本的に、バックグラウンドで通常どおりビジネスを行うASyncTaskクラスがあります。終わったら何かしたいのですが。さて、先に進んで「onPostExecute()を使用してください」と言う前に、落とし穴があります。実行する必要のあるメソッドは、Taskクラスではなく、アクティビティにあります。
私の見方では、2つの選択肢があります。
A:
CustomTask task = new CustomTask();
task.execute(passedParams);
//when(task.execute is finished)
{
doX();
}
とてもシンプルで、アクティビティとアクティビティのgetStatus()を常にポーリングしなくても、タスクがいつ完了したかを確認できるので、この方法で実行できることを願っています。私はこれが幸運になるとは思いませんが、誰かがそれを行う方法を持っているなら、それは素晴らしいことです
B:
アクティビティをパラメータとしてASyncTaskに渡します。これは厄介で、私はそれを使用することに満足していませんが、それとオブジェクト参照を除いて、それが機能するかどうかはわかりません
CustomTask task = new CustomTask();
task.execute(passedParams,MyActivity);
次に、タスクonPostExecuteで、MyActivity.doX();を呼び出すことができます。
C:
3番目の方法は、asynctaskをアクティビティ自体のプライベートクラスにすることですが、私は本当にそれを分離したいと思っています。再利用性とそうでないもの– </ p>
これについて何か考えはありますか?
要約すると、task.executeが終了した後にdoX()を実行する必要があります。どんなアイデアでもありがたいです。
D:
わかりました、私はここでロールになっていることを知っています。私は新しい解決策を考え続けています。どこからでも呼び出すことができるクラスメソッドまたは静的メソッド。
public class ProfileSettings extends Activity
{
public static void doX()
{
//Logic...
}
}
AsyncTaskから
MyActivity.doX();