xen*_*ite 3 java multithreading android
在我的Android应用程序中,我有一个ui-update-thread,可以使我的所有视图保持最新状态.
protected Thread UIUpdateThread = new Thread()
{
@Override
public void run()
{
while(true)
{
query_some_data_from_service(); // gets some "fresh" data from a service
UIUpdateHandler.sendEmptyMessage(0); // will update all ui elements with the new values
sleep(1234);
}
}
};
Run Code Online (Sandbox Code Playgroud)
我在onCreate()中启动此线程
UIUpdateThread.start();
Run Code Online (Sandbox Code Playgroud)
当我离开活动时(例如,因为我切换到另一个活动)我打电话,一切正常#:)
UIUpdateThread.interrupt();
Run Code Online (Sandbox Code Playgroud)
在onStop()内,以防止线程一直运行.如果我不这样做,它会继续运行,即使我关闭应用程序!?!?!!
问题是:当从其他活动返回到此活动时,如何将此线程恢复生机?run()不起作用,在onResume()之类的其他方法中调用初始start()会使应用程序崩溃.
我已经尝试了很多东西,但似乎没有任何工作:(
Atmocreation的答案是正确的......假设你的实现首先是一个好主意.
首先,您在此处显示的线程会短暂运行并立即终止,因此您无需调用interrupt()即可停止它.在这种情况下,您可能更好地切换到一个AsyncTask而不是您自己的线程和处理程序,因为您将需要更少的代码并可以利用AsyncTask的线程池.
如果你的真实线程不是你在这里展示的,而是某种无限循环,那一般来说这是一个坏主意.永远不要创建繁忙的循环,尤其是在Android中 最有可能的是,对于您的问题有一个更好的解决方案,也许是一个可以避免需要的解决方案interrupt().
| 归档时间: |
|
| 查看次数: |
6441 次 |
| 最近记录: |