java怎么让线程重新启动,java – 如何在android中重启一个线程?

本文讨论了在Android应用中如何管理UI更新线程(如自定义Thread UIUpdateThread),如何在切换活动时正确中断并恢复线程。作者建议使用AsyncTask替代无限循环,并在活动间切换时避免直接start()。解决方法包括在创建时启动线程和使用合适的生命周期回调.
摘要由CSDN通过智能技术生成

在我的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,multithreading

来源: https://codeday.me/bug/20190717/1484314.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值