我有一个 MainActivity
、SecondaryActivity
和一个 AsyncTask
类。
MainActivity 有一个名为 doSomething()
我从 MainActivity 中调用 AsyncTask,如下所示:
new asyncTask(MainActivity.this).execute();
这意味着我可以在 onPostExecute
中引用 MainActivity
@Override
protected void onPostExecute(Boolean result){
super.onPostExecute(result);
# activity is defined as this.activity
activity.doSomething();
}
如何以类似的方式从 secondaryActivity 调用 AsyncTask,因为我需要引用 MainActivity 来访问其方法?
编辑:我希望始终调用 doSomething()
。因此,即使它来自 SecondActivity,一旦它完成后台操作 -> doSomething()
我调用的方法刷新 MainActivity 的屏幕以显示数据更改。辅助 Activity 仅在暂停/停止/销毁时调用 AsyncTask,但目前 Asynctask 在 MainActivity 启动后完成,因此更改不可见。
最佳答案
我认为您的 AsyncTask 当前嵌套在 MainActivity 中。最好把它放在单独的类中。无论它需要什么参数,都将其传递到其构造函数中。让您的两个 Activity 实现相同的接口(interface)。像这样的事情
class MainActivity/SecondaryActivity implements DoSomethingListener {
void doSomething() {
}
}
还将您的 Activity 引用传递给构造函数中的 AsyncTask。
最后是 onPostExecute,因为您引用了 MainActivity 或 secondary Activity。调用activity.doSomething。
关于android - 从 AsyncTask 调用不同的 Activity 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37911206/