爲了發出我的http請求,我將一個Intent服務與一個ResultReceiver結合使用。問題是我需要向服務傳遞我想要的結果類型。基本上,需要在服務中使用Gson,以便在後臺進行此處理。像這樣的東西。在服務上使用Gson
Type collectionType = new TypeToken<TYPE>(){}.getType();
receiver.send(200, gson.fromJson(json, collectionType));
但我找不到在意圖中傳遞Type的方法。開始服務的代碼是這樣的
protected void request(String url, Bundle parametros, int method, HttpInterceptor.Receiver callback){
Type type = callback.getType();
HttpInterceptor receiver = new HttpInterceptor(activity, new Handler());
receiver.setReceiver(callback);
receivers.add(receiver);
Intent intent = new Intent(activity, RESTService.class);
intent.setData(Uri.parse(url));
intent.putExtra(RESTService.EXTRA_AUTH, true);
intent.putExtra(RESTService.EXTRA_PARAMS, parametros);
intent.putExtra(RESTService.EXTRA_HTTP_VERB, method);
intent.putExtra(RESTService.EXTRA_RESULT_RECEIVER, receiver);
intent.putExtra(RESTService.EXTRA_TYPE, type); //not working
activity.startService(intent);
}
我知道這個類必須是可序列化的,或者是parceable。但是,即使在新類中封裝類型,我也無法使其工作。
我會嘗試這個 – 2015-04-02 10:12:10
的Class.forName()不不適用於類型「java.util.Collection」。你知道如何解決這個問題嗎? –
2015-04-02 11:56:31