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;   
}
4

1 に答える 1

0

AsyncTaskネットワーク操作を行っている場合に使用することをお勧めします。ネットワーク操作を処理するのが最善です。

于 2013-03-27T16:51:48.787 に答える