java– 如何在android中重启一个线程?

java– 如何在android中重启一个线程?,第1张

概述在我的Android应用程序中,我有一个ui-update-thread,可以使我的所有视图保持最新状态.protectedThreadUIUpdateThread=newThread(){@Overridepublicvoidrun(){while(true){query_some_data_from_service();//getssome"fresh"datafromaservice

在我的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);  } }};

我在onCreate()中启动此线程

UIUpdateThread.start();

当我离开活动时(例如,因为我切换到另一个活动)我打电话,一切正常#:)

UIUpdateThread.interrupt();

在onStop()内,以防止线程一直运行.如果我不这样做,它会继续运行,即使我关闭应用程序!?!?!!

问题是:当从其他活动返回到此活动时,如何将此线程恢复生机? run()不起作用,在onResume()之类的其他方法中调用初始start()会使应用程序崩溃.

我已经尝试了很多东西,但似乎没有任何工作:(

解决方法:

Atmocreation的答案是正确的……假设你的实现首先是一个好主意.

首先,您在此处显示的线程会短暂运行并立即终止,因此您无需调用interrupt()来停止它.在这种情况下,您可能更好地切换到AsyncTask而不是您自己的线程和处理程序,因为您将需要更少的代码并可以利用AsyncTask的线程池.

如果你的真实线程不是你在这里展示的,而是某种无限循环,那一般来说这是一个坏主意.永远不要创建繁忙的循环,尤其是在AndroID中最有可能的是,对于您的问题有一个更好的解决方案,也许可以避免需要interrupt().

总结

以上是内存溢出为你收集整理的java – 如何在android中重启一个线程?全部内容,希望文章能够帮你解决java – 如何在android中重启一个线程?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存