服务被销毁时如何关闭服务中的后台线程
How to close a background thread in a service when the service get destroyed
我想在 onDestroy
方法中关闭服务中的后台线程,因为如果我停止服务,后台线程仍然 运行。因为 thread.stop()
已被弃用,我真的不知道该怎么做。
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
runAsForeground();
Runnable service = new Runnable() {
@Override
public void run() {
connect(client,options);
}
};
backgroundThread = new Thread(service);
backgroundThread.start();
Log.i(TAG, "onStartCommand methode called");
return Service.START_NOT_STICKY;
}
我想您使用的是 Service
。然后你可以 Context.stopService(intent)
就像你 Context.startService(intent)
.
您可以使用
stopService(new Intent(this, YourService.class));
它将停止此服务及其所有 Threads
。
线程生命周期与 Android 上下文组件生命周期不同。停止服务不足以停止服务创建的线程。 Thread.interrupt()
是一个选项。 - 不过你应该赶上 InterruptedException
。如果还不够,你可以检查你的 connect()
方法中是否没有停止服务。
我想在 onDestroy
方法中关闭服务中的后台线程,因为如果我停止服务,后台线程仍然 运行。因为 thread.stop()
已被弃用,我真的不知道该怎么做。
@Override
public int onStartCommand(Intent intent, int flags, int startId)
{
runAsForeground();
Runnable service = new Runnable() {
@Override
public void run() {
connect(client,options);
}
};
backgroundThread = new Thread(service);
backgroundThread.start();
Log.i(TAG, "onStartCommand methode called");
return Service.START_NOT_STICKY;
}
我想您使用的是 Service
。然后你可以 Context.stopService(intent)
就像你 Context.startService(intent)
.
您可以使用
stopService(new Intent(this, YourService.class));
它将停止此服务及其所有 Threads
。
线程生命周期与 Android 上下文组件生命周期不同。停止服务不足以停止服务创建的线程。 Thread.interrupt()
是一个选项。 - 不过你应该赶上 InterruptedException
。如果还不够,你可以检查你的 connect()
方法中是否没有停止服务。