在Android上销毁时,如何停止正在运行的线程?
我在Android活动中使用了一些线程对象。但这些线程在销毁上的活动时不会自行停止。我的线程停止代码如下所示:在Android上销毁时,如何停止正在运行的线程?,android,Android,我在Android活动中使用了一些线程对象。但这些线程在销毁上的活动时不会自行停止。我的线程停止代码如下所示: @Override public void onDestroy() { super.onDestroy(); thread.interrupt(); } 上面的代码不仅用于停止线程对象,而且还引发InterruptedException。在没有异常的情况下停止正在运行的线程的正确方法是什么 线程对象抛出InterruptedException时不是错误吗?添加fin
@Override
public void onDestroy() {
super.onDestroy();
thread.interrupt();
}
上面的代码不仅用于停止线程对象,而且还引发InterruptedException。在没有异常的情况下停止正在运行的线程的正确方法是什么
线程对象抛出InterruptedException时不是错误吗?添加
finish()当调用onDestroy()或其他任何东西(如按下按钮)时,code>应结束活动。使用onDestroy()时,请确保super.onDestroy()代码>放在调用其他所有内容之后。请尝试以下方法:
volatile boolean stop = false;
public void run() {
while ( !stop ) {
log.v("Thread", "Thread running..." );
try {
Thread.sleep( 1000 );
} catch ( InterruptedException e ) {
log.v("Thread","Thread interrupted..." );
}
}
}
@Override
public void onDestroy() {
stop = true;
super.onDestroy();
}
及
试图从外部阻止线程是不可靠的
我建议在应用程序中使用全局参数,使用SharePreferences或应用程序上下文(例如,应用程序是否处于活动状态)
让线自毁
让我试着解释一下
在你的活动中
protected void onResume() {
super.onResume();
// isAppActive
CommonUtils.setAppActive(mContext, true);
}
protected void onPause() {
super.onPause();
// isAppActive
CommonUtils.setAppActive(mContext, true);
}
在你的线程中
if ( !CommonUtils.isAppActive(mContext) )
只要退出线程循环。我就是这样执行的。
在你的活动中
@Override
public void onDestroy() {
super.onDestroy();
thread.interrupt();
}
在你的线程中
@Override
public void run() {
// stop your thread
if (interrupted()) {
return;
}
// do your work
}
您好,在我添加finish()函数调用后,它一直抛出InterruptedException。我应该在我的Runnable类中重写某个方法吗??顺便说一句,我没有点击-1按钮来回复这个:那么,当thread对象抛出InterruptedException时不是一个错误吗?
@Override
public void run() {
// stop your thread
if (interrupted()) {
return;
}
// do your work
}