使用接口 1) 创建一个接口
public interface OnDataSendToActivity {
public void sendData(String str);
}
2)在你的活动中实现它
public class MainActivity extends Activity implements OnDataSendToActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
new AsyncTest(this).execute(new String[]{"AnyData"}); // start your task
}
@Override
public void sendData(String str) {
// TODO Auto-generated method stub
}
}
3) 在 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);
}
}
在这里,您的 OnPostExecute 将在 AsyncTask 完成所有任务后调用,并将获取“结果”作为参数,由 doInBackground(){ return "";} 返回。
而“dataSendToActivity.sendData(result);” 它将调用活动的覆盖方法“public void sendData(String str) {}”。
要记住的一个极端情况:一定要传递this
,即您当前活动的上下文,AsyncTask
而不是创建您的活动的另一个实例,否则您Activity
将被销毁并创建新的实例。