基本上,我是否必须将我想在 doInBackground 中的另一个线程上运行的代码,或者我可以在 doInBackground 中调用另一个函数/类/whatever-it-is-functions-are-call-in-JAVA 并让它异步运行?IE:(我在网上找到的示例代码)
protected String doInBackground(String... params) {
for(int i=0;i<5;i++) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
TextView txt = (TextView) findViewById(R.id.output);
txt.setText("Executed");
return null;
}
是我看到它完成的方式,但我可以这样做:
protected String doInBackground(String... params) {
postToServer(x,y,z,h);
}
并让它调用我已经编写的函数,然后让该函数在另一个线程中运行?有时我的 HTTP 服务器响应有点慢(目前它只是一个低级测试服务器),如果我的 postToServer() 调用超过 5 秒,Android 会自动弹出终止进程框,并且还会禁用我的 UI,直到postToServer() 调用完成。这是一个问题,因为我正在开发一个 GPS 跟踪应用程序(内部为我工作的公司)并且关闭跟踪的 UI 选项冻结,直到我的 postToServer() 完成,这有时不会发生。如果这个问题已经得到解答,我深表歉意,我尝试搜索,但没有找到任何可以按照我希望的方式工作的示例。