我有一个活动类,它两次调用后台AsyncTask
BackgroundTask bt1 = new BackgroundTask(this, ApiHelper.GET);
bt.execute(url1);
BackgroundTask bt2 = new BackgroundTask(this, ApiHelper.POST, params);
bt.execute(url2);
一个用于获取数据,另一个用于将数据发布到服务器。
此AsyncTask的构造方法如下
public BackgroundTask(Context context, String method) {
this.context = context;
this.method = method;
this.callback = (onBackgroundTaskListener<String>) context;
}
public BackgroundTask(Context context, String method, ArrayList<NameValuePair> params) {
this.context = context;
this.method = method;
this.callback = (onBackgroundTaskListener<String>) context;
this.params = params;
}
现在MainActivity.class通过onBackgroundTaskListener<String>
接口实现为
public interface onBackgroundTaskListener<T> {
void onTaskComplete(T result);
}
AsyncTask类的onPostExecute String result
返回或传递回调用类,如下所示。
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
callback.onTaskComplete(result);
}
现在,我在MainActivity中有一个方法(onTaskComplete)处理来自一个后台任务的两个响应。我想使用条件来找出返回的执行结果,例如...
@Override
public void onTaskComplete(String result) {
if (execution == 1) {
// Parse the GET result
} else if(execution == 2) {
// Parse the POST result
}
}
我不想实现多个AsyncTask,并希望使用单个AsyncTask来实现它,并且在单个活动中多次调用此AsyncTask。什么是实现此目标的可能方法。
enum BackgroundType{ GET, POST }
public interface onBackgroundTaskListener<T> {
void onTaskComplete(T result, BackgroundType type);
}
--------------------------
BackgroundTask bt1 = new BackgroundTask(this, ApiHelper.GET, GET);
bt.execute(url1);
BackgroundTask bt2 = new BackgroundTask(this, ApiHelper.POST, params, POST);
bt.execute(url2);
------------------------
@Override
public void onTaskComplete(String result, BackgroundType type) {
switch(type){
case GET:
break;
case POST:
break;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句