停止android中的线程活动
我不知道如何声明销毁此活动。如果我退出应用程序,它会使整个手机崩溃,因为它是在后台运行的。我在另一个问题中给出了一个提纲,但我不确定如何实施。我目前有:停止android中的线程活动,android,multithreading,Android,Multithreading,我不知道如何声明销毁此活动。如果我退出应用程序,它会使整个手机崩溃,因为它是在后台运行的。我在另一个问题中给出了一个提纲,但我不确定如何实施。我目前有: new Thread(new Runnable(){ @Override public void run() { while(true) handler.sendEmptyMessage(FIRE); } }).start(); 那我该怎么阻止这一切呢。我一根线也停不下来,我在看书,那很
new Thread(new Runnable(){
@Override
public void run() {
while(true)
handler.sendEmptyMessage(FIRE);
}
}).start();
那我该怎么阻止这一切呢。我一根线也停不下来,我在看书,那很危险。那么,我应该如何构造它,使它不会破坏系统?我是否应该删除while
循环,使其成为一个方法,并在暂停时终止该方法?比如:
public void run() {
handlerMsg();
}}).start():
然后我可以做:
onFinish() {
handlerMsg.stop
}
这感觉不对。任何帮助都会得到极大的感谢。为什么不添加一个简单的条件来更新线程所查看的全局变量,并在您希望它停止时更新它,然后让线程到达其末端 像这样:
thread t = new thread(new runnable(){
public void run()
{
while(continue())
{
handler.send(....)
}
}
private bool continue()
{
doing something
return false when done
else true
}
这样做,将允许您控制线程何时停止(到达其末端),而不是强制停止它
还有一件事要考虑的是,如果它是一个没有UI的活动,你可以考虑把它变成一个服务而不是完全成熟的活动。这使得它可以在后台运行,并在没有任何用户交互的情况下完成它需要做的事情
我希望这有帮助
它的流量将是
活动启动服务->服务生成线程->执行其工作->通过广播返回ok,然后停止服务
如果这有帮助的话,别忘了在上面标注一个答案:) 为什么不添加一个简单的条件来更新线程所查看的全局变量,并在您希望它停止时更新它,然后让线程到达其末端 像这样:
thread t = new thread(new runnable(){
public void run()
{
while(continue())
{
handler.send(....)
}
}
private bool continue()
{
doing something
return false when done
else true
}
这样做,将允许您控制线程何时停止(到达其末端),而不是强制停止它
还有一件事要考虑的是,如果它是一个没有UI的活动,你可以考虑把它变成一个服务而不是完全成熟的活动。这使得它可以在后台运行,并在没有任何用户交互的情况下完成它需要做的事情
我希望这有帮助
它的流量将是
活动启动服务->服务生成线程->执行其工作->通过广播返回ok,然后停止服务
如果这有帮助的话,别忘了在上面标注一个答案:) 如果您在没有框架的情况下使用Thread类进行长时间运行(始终运行)(请参见:ThreadExecutor),最终处理消息,则会误解其预期用途。这应该在服务中完成。 如果你想时不时地触发一些东西,你可能还可以使用一个处理程序(它可以在一段时间后设置为fire,然后在以后重置为fire) 回到您的基本问题:只要线程本身能够停止自身,您就可以随时停止正在运行的线程对象。查看Thread类的interrupt()和interrupted()函数。如果你在你的线程中发布一个Thread.interrupt(),线程必须检查(异常),如果有什么事情需要他停止并按请求执行。
不管怎样,你在服务方面会做得更好。一旦您的活动绑定到它,它就会启动,一旦它不再绑定,它就会自动停止。如果您在没有框架的情况下使用Thread类进行长时间运行(始终运行)(请参见:ThreadExecutor),最终会处理消息,那么您误解了它的预期用途。这应该在服务中完成。 如果你想时不时地触发一些东西,你可能还可以使用一个处理程序(它可以在一段时间后设置为fire,然后在以后重置为fire) 回到您的基本问题:只要线程本身能够停止自身,您就可以随时停止正在运行的线程对象。查看Thread类的interrupt()和interrupted()函数。如果你在你的线程中发布一个Thread.interrupt(),线程必须检查(异常),如果有什么事情需要他停止并按请求执行。
不管怎样,你在服务方面会做得更好。当您的活动绑定到它时,它将立即启动,当它不再绑定时,它将自动停止。一般来说,有几种机制可以执行您尝试执行的操作,其复杂性和有效性各不相同。我想大致描述几个 服务 可以被认为是无头活动。其思想是服务发布一个接口,其他代码可以通过该接口与之交互。服务由Android管理,需要时启动,不需要时关闭 服务提供了一些独特的特性:(来自链接文档)