gpt4 book ai didi

java - 一个界面如何在一个 Activity 中用于两个以上的后台android任务?

转载 作者:行者123 更新时间:2023-11-30 12:06:51 29 4
gpt4 key购买 nike

我有一个 Activity 类调用后台 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 来实现它,并在单个 Activity 中多次调用此 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;
}
}

关于java - 一个界面如何在一个 Activity 中用于两个以上的后台android任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55304926/

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