无法从Android AsyncTask访问Activity的方法

use*_*092 1 android android-widget android-emulator android-intent android-layout

我有一个问题,我需要从Android AsyncTask的onPostExecute()方法访问我的Activity中的方法

我有2个活动都包含一个常用方法如下:

(1)Activity1 - > refreshUI()
(2)Activity2 ----> refreshUI()

我有一个AsyncTask调用GetDataAsyncTask(Activity a )将调用活动作为参数

现在从我的活动1我将打电话给新的GetDataAsyncTask(Activity1.this).execute.
与我的活动2相同,我会打电话给新的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()  
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

谁能帮助我如何从中获取任何被调用活动的参考AsyncTask

wsa*_*lle 5

创建一个interface具有该方法的方法refreshUI(),并使Activity1和Activity2都实现它.然后,您只需要对类型context的接口进行类型转换.

此外,您需要注意保持对Activityfrom内部的引用AsyncTask,因为在配置更改(如屏幕旋转)的情况下,您将保持已销毁的Activity实例.有关详细信息,请参阅此处,以及相应的示例解决方案.