2013-03-27 59 views
0

我在做一些網絡運營和你知道與蜂窩他們應該在另一個線程來完成,而不是UIthread否則它給networkmainthread錯誤。在我的情況下,我必須從API獲取返回值,並使用它做一些事情,所以我決定使用Callable。我正在發送一個請求,並在call()方法中獲得響應,但最終它仍然給我造成了網絡主線程錯誤。我應該在哪裏犯錯?任何建議將非常感激。可贖回和Networkmainthread錯誤

private static <T> T getReader(String url, List<NameValuePair> params, final Class<T> classOfT, final Context _context) { 

    T result = null; 
    RestApiHelper apiHelper = new RestApiHelper(url, params, _context); 
    ExecutorService executor = Executors.newFixedThreadPool(10); 
    Future<Reader> futureSubmit = executor.submit(apiHelper); 

    try { 
     Reader reader = futureSubmit.get(); 
     if (reader != null){ 
      result = new Gson().fromJson(reader, classOfT); //I'm getting the exception at this line. 
      . 
      . 
      . 


//********************************************* 
//call method of RestApiHelper class which implemented Callable 
//********************************************* 
@Override 
public Reader call() throws Exception { 
    Reader reader = null; 
    if(fileUri==null) 
     reader = executeNormalPost(); 
    else 
     reader = executeSendFilePost(); 

    return reader; 
} 

回答

0

如果您正在進行網絡操作,我會建議使用AsyncTask。最好處理聯網操作。

+0

我說我一定要得到的響應值,並用它做什麼,這將嵌套地恢復。異步不能解決問題。另一方面,callable正在另一個線程中執行該過程。我無法理解的是爲什麼我得到這個錯誤,怎麼能在mainthread上運行? – 2013-03-27 18:25:38