我的代码结构有问题,它工作正常,但处理数据需要 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()