AsyncTask中的套接字处理传入的数据太慢

时间:2014-12-08 22:01:07

标签: android sockets android-asynctask threadpool

我的代码结构出现了问题,它工作正常,但处理数据需要15​​0-200毫秒,而且肯定会随着数据库的大小而增加。我正在考虑处理线程中的传入数据,但它可以解决。这是asynctask:

public class IncomingData extends AsyncTask<Void, Void, String> {

    public BufferedReader input;
    public String read = null;

    public IncomingData() {
    }

    @Override
    public String doInBackground(Void... params) {

        try {
            input = new BufferedReader(new InputStreamReader(
                    socket.getInputStream()));

            while (input.ready()) {
                read = input.readLine();

            }

        } catch (NullPointerException e) {

            e.printStackTrace();
        } catch (UnknownHostException e) {

            e.printStackTrace();
        } catch (IOException e) {

            e.printStackTrace();
        } catch (Exception e) {

        }

        return read;
    }

    @Override
    public void onPostExecute(final String input) {

        if (input != null) {
            InputStreamTokenizer(input);    
        }
        new IncomingData().execute();
    }
}

所以基本上我说函数InputStreamTokenizer需要200多毫秒来完成,之后我可以读取新的传入行。 任何想法我怎么能做一个线程或其他任何东西? 谢谢,

1 个答案:

答案 0 :(得分:0)

使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)代替执行()