我使用的應用程序是基於Web的,並且使用Json進行大部分通信。我正在優化代碼的過程中遇到了一些問題。Android - 傳遞.class到AsyncTask與Gson一起使用
以前,我所有的活動都使用AsyncTask的不同子類來調用webservices,他們以String的形式獲取響應,然後將其解析爲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對象。
但是,由於一些響應可能相當大,我不希望Json在UI線程中解析,而是在AsyncTask中解析。爲了做到這一點,我需要將T.class參數傳遞給我的doInBackground()方法,因爲Gson()。fromJson()方法需要它。我的電話會是這樣的
new AsyncJsonTask().execute("GetValues", parameterMap, POJO.class);
我該如何做到這一點,這是在這裏最小化的正確方法?
爲什麼不呢?在我看來很好。 – 2012-01-28 22:04:10
但是,我如何獲得POJO.class作爲一個對象?從(Object ... params) – 2012-01-28 23:57:06