Java UI线程冻结
我正在使用以下函数创建一个新线程Java UI线程冻结,java,android,multithreading,Java,Android,Multithreading,我正在使用以下函数创建一个新线程 public void toCallAsynchronous() { mThread = new Thread() { public void run() { while (true) { try { // do something here if(mLoggedIn)
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函数访问服务器以获取新文件,下载它们并将条目更新到数据库中。您能指出我在这里做错了什么吗?(true)
很奇怪,因为您可能不希望此线程永远运行。至少在(!isFinishing())
此外,您还需要确保
mDownload.syncData
不会尝试访问任何UI,如果尝试访问,将出现异常。谢谢Alex。我将其更改为while(mRunning),在onResume中将其设置为true,在onPause和onDestroy中将其设置为false。此外,在syncData上也有一些UI操作,在删除它后运行得非常好。