我正在使用以下函数创建一个新线程。
public void toCallAsynchronous() {
mThread = new Thread() {
public void run() {
while (true) {
try {
// do something here
if(mLoggedIn)
{
boolean syncresult = mDownload.syncData();
}
Log.d(TAG, "local Thread sleeping");
Thread.sleep(10000);
//mHandler.postDelayed(this, 1000);
} catch (InterruptedException e) {
Log.e(TAG, "local Thread error", e);
}
}
}
};
mThread.start();
}
我在onResume中调用它,因为我希望只有当用户登录到他的帐户时才启动此线程。 synData函数访问服务器以获取新文件,下载它们并将条目更新到数据库中。你能否明白我在这里做错了什么?
答案 0 :(得分:2)
while(true)
很奇怪,因为你可能不希望这个线程永远运行。至少它应该是while(!isFinishing())
此外,您还需要确保mDownload.syncData
不会尝试访问任何用户界面,如果有,则会出现例外情况。