gpt4 book ai didi

android - 无法从 Android AsyncTask 访问 Activity 的方法

转载 作者:行者123 更新时间:2023-11-29 14:33:10 26 4
gpt4 key购买 nike

我有一个问题,我需要从 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com