2015-04-02 37 views
0

爲了發出我的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。但是,即使在新類中封裝類型,我也無法使其工作。

回答

0

不確定,如何在intent中傳遞對象的完全限定名(String format)。並呼籲Class.forName(fullyQualifiedName)會對gson.fromJson(json, resultOfClassForName)

+0

我會嘗試這個 – 2015-04-02 10:12:10

+0

的Class.forName()不不適用於類型「java.util.Collection 」。你知道如何解決這個問題嗎? – 2015-04-02 11:56:31