这是一个我不知道该怎么做。基本上,我有一个 ASyncTask 类,它在后台照常工作。我想在它完成后做点什么。现在,在您继续说“只使用 onPostExecute()”之前,有一个问题。我需要运行的方法是在活动中,而不是在任务类中。
在我看来,我有两个选择。
A:
CustomTask task = new CustomTask();
task.execute(passedParams);
//when(task.execute is finished)
{
doX();
}
我希望我可以这样做,因为它是如此简单,让我检查任务何时完成,而不必不断地轮询它的活动和活动的 getStatus()。我不认为我会这么幸运,但如果有人有办法做到这一点,那就太好了
乙:
将活动作为参数传递给 ASyncTask。这很混乱,我对使用它不满意,但除此之外和对象引用,我不知道它是否会起作用
CustomTask task = new CustomTask();
task.execute(passedParams,MyActivity);
然后在 PostExecute 任务中,我可以让它调用 MyActivity.doX();
C:
第三种方法是使 asynctask 成为活动本身的私有类,但我真的想将它分开。可重用性和其他 -</p>
对此有什么想法吗?
综上所述,task.execute 完成后需要 doX() 。任何想法表示赞赏。
丁:
好的,我知道我在这里很顺利。我一直在想新的解决方案。可以从任何地方调用的类方法或静态方法。
public class ProfileSettings extends Activity
{
public static void doX()
{
//Logic...
}
}
从异步任务
MyActivity.doX();