java - 将多个不同类型的参数传递给 doInBackground (Params...params) 方法的最正确方法是什么?

标签 java android android-asynctask

我正在为一个网站设计 Android 客户端。所以我必须实现很多不同的网络操作。例如用户授权或在服务器上搜索。为此,我必须向 REST Web 服务器发送带有一些参数和 URL 的 JSON 请求。因此,我不仅必须传递 String 参数,还必须传递一些数据结构(例如 LinkedHashMap)。问题是我不知道最正确的方法。到目前为止我做了下一步:

  1. protected Boolean doInBackground(Object... param) 。然后将param[0],param[1]转换为不同的类型。我认为这是一个不好的方法。
  2. 为此目的使用 javatuples 库:

protected Void doInBackground(Pair<String, LinkedHashMap<String, Object>>... params)

看起来代码太复杂和冗余。最重要的是我必须添加

@SuppressWarnings("unchecked")

或者我收到类型安全警告。

因此,也许一些专家可以帮助我解决这个问题,并提出最正确、最有效的方法建议。

最佳答案

您可以为 Asynctask 拥有自己的构造函数,并将它们存储为可以在 doinBackground 中使用的字段

    private class Task extends AsyncTask<Void, Void, Void> {

    Task(int a, long b){
       //store a, b
    }
    @Override
    protected Void doInBackground(Void... arg) {    
    }   
  }

然后

new Task(1,2).execute();

关于java - 将多个不同类型的参数传递给 doInBackground (Params...params) 方法的最正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13976765/

相关文章:

android - 如何提取 AsyncTask 的返回值?

android - 修改之前如何在 AsyncTask 中使用变量?

java - 如果我的程序中有多个线程,每个线程在技术上是否都有自己的堆栈?每个线程都有自己的堆吗?

java - 我如何读取java项目的文件结构?

android - 应用程序更新后重复的 Intent 。警报是否存在?

android - 从非 Activity 中完成 Activity

java - 一段时间后取消 AsyncTask

java - 在 Itext 中的当前位置绘制一条线

java - Android 点击时改变文本颜色

android - 单击信息窗口后关闭 android google map 中的信息窗口?