服务遭到破坏后如何​​关闭服务中的后台线程

时间:2018-08-21 07:48:30

标签: android android-service java-threads

我想用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;
}

3 个答案:

答案 0 :(得分:0)

我想您正在使用Service。然后您可以像Context.stopService(intent)一样Context.startService(intent)

答案 1 :(得分:0)

您可以使用

stopService(new Intent(this, YourService.class));

它将停止该服务及其所有Threads

答案 2 :(得分:0)

线程生命周期与Android上下文组件生命周期不同。停止服务不足以停止创建该服务的线程。 Thread.interrupt()是一个选项。 -不过,您应该抓住InterruptedException。如果这还不够,您可以检查connect()方法中服务是否没有停止。