我有一个问题,我需要从 Android AsyncTask 的 onPostExecute()
方法访问我的 Activity 中的方法
我有 2 个 Activity 都包含一个通用方法,如下所示:
(1) Activity1 --> refreshUI()
(2)Activity2---->refreshUI()
我有一个 AsyncTask
调用 GetDataAsyncTask(Activity a )
,它将调用 Activity 作为参数
现在,我将从我的 activity1 调用新的 GetDataAsyncTask(Activity1.this).execute
。
与上面我的 activity2 相同,我将调用新的 GetDataAsyncTask(Activity2.this).execute
。
我的 AsyncTask 如下:
public class GetDataAsyncTask extends AsyncTask<String ,Void , String> {
public Activity context;
public PostAsyncTaskHelper(Activity c) {
context = c;
}
protected String doInBackground(String... arg0) {
// Webservice calls
}
protected void onPostExecute(String result) {
if(result.equals("qq")) {
//Where I am not able to access refreshUI()
//method of any one of my activities
context.refreshUI()
}
}
}
任何人都可以帮助我如何从 AsyncTask
中获取任何调用 Activity 的引用吗?
最佳答案
制作一个接口(interface)
,它有方法refreshUI()
,并让Activity1 和Activity2 实现它。然后,您只需将 context
类型转换为接口(interface)的类型。
此外,您需要小心从 AsyncTask
中保存对 Activity
的引用,因为在配置更改的情况下(如屏幕旋转),您将保留一个已销毁的 Activity 实例。 See here详情及相应的example solution对此。
关于android - 无法从 Android AsyncTask 访问 Activity 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11872212/