我有一个在后台运行自己的线程的服务。我想杀死包括线程在内的服务。
我创建了这样的线程并运行它。
public class DaemonService extends Service {
private DaemonThread thread;
class DaemonThread extends Thread {
public void run()
{
runDaemon(mArgv.toArray(), mConfig);
}
}
public void onStart(Intent intent, int startId) {
thread = new DaemonThread();
thread.start();
}
}
如何杀死服务和线程?我不必担心数据安全问题。
答案 0 :(得分:36)
杀死线程,我想你可以这样做:
myService.getThread().interrupt();
注意:方法Thread.stop()
已弃用
编辑::试试这个
public void stopThread(){
if(myService.getThread()!=null){
myService.getThread().interrupt();
myService.setThread(null);
}
}
答案 1 :(得分:5)
不推荐使用方法Thread.stop()
,您可以使用
Thread.currentThread().interrupt();
并设置thread=null
。
答案 2 :(得分:2)
使用服务的Context.stopService()
或stopSelf()
方法。
答案 3 :(得分:1)
在服务的onDestroy方法
中执行此操作http://developer.android.com/reference/android/app/Service.html#onDestroy()
public void onDestroy(){
thread.stop();
super.onDestroy();
}
然后使用stopService()停止服务; (这将调用onDestroy());
答案 4 :(得分:0)
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
Thread.currentThread().interrupt();
}