一个活动中如何将一个界面用于两个以上的后台Android任务?

紫藤

我有一个活动类,它两次调用后台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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当两个类都在一个活动中时,如何将 Bitmap 从一个类移动到另一个类?

如何将一个 Qscrollbar 用于两个 QListWidgets

在一个活动中显示两个活动

如何在android的同一个活动中实现两个按钮?

如何将两个功能合并为一个功能组件中的一个?

如何将数据从两个不同的活动传递到另一个活动

如何将文件中的两个单词放入数组的一个索引中?

在Android的一个单一活动中获取两个不同活动的数据

如何将两个元素上的两个事件绑定到jQuery中的一个函数?

如何将一个图形保存在两个目标文件中?

如何将子组件中的两个值与一个事件结合?

如何将两个文档插入到一个文档中

如何将两个keras模型连接到一个模型中?

如何将Julia中的两个Vector组合成一个Dict?

如何将两个列表合为一个但在Python中按转

如何将两个函数调用放在一个 HTML 文件中?

如何将两个表列合并到SQL Server中的一个表

如何将两个选定的列合并到一个表中?

如何将两个不同的查询合并到一个表中?

如何将两个Rust向量交织到一个新向量中?

如何将两个查询合并到一个子查询中

我如何将两个ngFor放在一个div中

如何将一个代码连接到两个git存储库中?

如何将两个不同的数组放在一个数组中

如何将两个灵活的数组放在一个结构中?

如何将两个列表合并到一个交替元素中

我们如何将两个以上的对象数组合并为一个对象数组

如何同时将数据从一个活动传递到两个或多个活动?

如何将两个项目放入一个 div 中,一个在最左边,一个在中心?