使用接口
1)创建一个接口
public interface OnDataSendToActivity {
public void sendData(String str);
}
2) 在您的Activity中实现它
public class MainActivity extends Activity implements OnDataSendToActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
new AsyncTest(this).execute(new String[]{"AnyData"});
}
@Override
public void sendData(String str) {
}
}
3) 在AsyncTask类中创建构造函数 AsyncTask(Activity activity){}
在AsyncTask文件中注册您的接口
并像下面这样调用接口方法。
public class AsyncTest extends AsyncTask<String, Integer, String> {
OnDataSendToActivity dataSendToActivity;
public AsyncTest(Activity activity){
dataSendToActivity = (OnDataSendToActivity)activity;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
dataSendToActivity.sendData(result);
}
}
在AsyncTask完成所有任务后,您的OnPostExecute将被调用并将获得由doInBackground(){ return "";}返回的"result"参数。
当"dataSendToActivity.sendData(result);"时,它将调用活动的重写方法 "public void sendData(String str) {}"。
要记住的一个边缘情况是:确保将您当前活动的上下文传递给AsyncTask,而不是创建另一个活动实例,否则您的Activity将被销毁并创建新的实例。