我的代码结构出现了问题,它工作正常,但处理数据需要150-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多毫秒来完成,之后我可以读取新的传入行。 任何想法我怎么能做一个线程或其他任何东西? 谢谢,
答案 0 :(得分:0)
使用executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR)代替执行()