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



我的代码结构有问题,它工作正常,但处理数据需要 150-200 毫秒,并且肯定会随着数据库的大小而增加。我正在考虑在线程中处理传入的数据,但它可以解决。这是异步任务:

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+ 毫秒才能完成,之后我可以读取新的传入行。知道我怎么能做一个线程或任何东西吗?谢谢

使用 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR) 代替 execute()

最新更新