服务被销毁时如何关闭服务中的后台线程

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() 方法中是否没有停止服务。