我使用的应用程序是基于网络的,并且使用 Json 进行大部分通信。我在优化代码的过程中遇到了一些问题。
以前,我所有的 Activity 都使用 AsyncTask 的单独子类来调用 Web 服务,它们将响应作为字符串获取,然后将其解析为 Json,最后使用 Gson fromJson() 方法生成 Java 对象。
我正在尝试将其缩小为可供所有人使用的单个类。目前,我的 doInBackground() 有以下内容..
@Override
protected JsonObject doInBackground(Object... params) {
String res = WebServices.httpGet(params[0]., (Map<String, String>) params[1]);
JsonParser parser = new JsonParser();
JsonObject jsonObject = parser.parse(res);
return jsonObject;
}
因此,我将要调用的方法 String 和具有参数的 HashMap 作为参数传递。调用 Activity 然后使用 Gson 将 Json 解析为 Java 对象。
但是,由于某些响应可能非常大,我不希望在 UI 线程中而是在 AsyncTask 中解析 Json。为了做到这一点,我需要以某种方式将 T.class 参数传递给我的 doInBackground() 方法,因为 Gson().fromJson() 方法需要它。我的电话会是这样的
new AsyncJsonTask().execute("GetValues", parameterMap, POJO.class);
我怎样才能做到这一点,这是最小化的正确方法吗?
最佳答案
Class<?>
是 Object
的子类型,因此您应该能够按原样传递它。
关于java - Android - 将 .class 传递给 AsyncTask 以与 Gson 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9047340/