0

我正在使用以下函数创建一个新线程。

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 函数访问服务器以获取新文件,下载它们并将条目更新到数据库中。您能否确定我在这里做错了什么?

4

1 回答 1

2

while(true)很奇怪,因为您可能不希望该线程永远运行。至少应该是while(!isFinishing())

此外,您需要确保mDownload.syncData不要尝试访问任何 UI,如果确实如此,则会出现异常。

于 2012-11-01T06:12:03.770 回答