我正在做一些网络操作,正如你所知道的,对于honeycomb,它们应该在另一个线程上完成,而不是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;
}发布于 2013-03-28 00:51:49
如果您正在进行网络操作,我建议您使用AsyncTask。最好是处理网络操作。
https://stackoverflow.com/questions/15663737
复制相似问题