0

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

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

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

它似乎过于复杂和冗余的代码。最重要的我必须补充

@SuppressWarnings("unchecked")

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

所以可能有一些专家可以帮助我,并建议最正确和最有效的方法。

4

3 回答 3

2

您可以拥有自己的 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();
于 2012-12-20T17:28:54.123 回答
0

“如果我是你”我不会用AsyncTask我的REST Application代替,你可以想出其他接管 AsyncTask 工作的设计模式。丢失的原因之一是bandwidth怎么可能发生的??如果您Http Transaction 可能正在发布或获取数据,我会打个电话,您的活动将在后台运行,操作系统可能会终止您的活动并关闭AsyncTask.

您可以使用该Service组件,而不是AsyncTask因为 android 对它的评价高于后台活动。

看看这个来自 virgil 的 Google IO 的旧视频

于 2012-12-20T17:24:52.350 回答
-1

我通常会创建一个简单的类来封装我将使用的所有数据。

于 2012-12-20T17:21:17.823 回答