当前位置: 首页 > 知识库问答 >
问题:

即使服务被系统杀死,服务内部的线程仍然运行

龙哲
2023-03-14

我的线程基本上是一些动作的循环。

我在循环中设置了一些检查,基本上检查布尔值是否仍然为真。布尔值在启动服务时设置为true,在停止服务时设置为false。更具体地说,我在我的服务类的ondestory()方法中将布尔值设置为false。

示例:

  public class MyThread extends Thread{
   
    
private boolean active; 
    
public void setBoolean(boolean active)
    this.active=active;
    }
    }
    
    public class MyService extends Service{
    
    private Mythread mythread;
    
    @Override
    public void onDestroy()
    {
    mythread.setBoolean(false);
    }
    }

问题在于,当系统停止服务时,不会调用ondestory()方法。那么,当服务不再运行时,如何正确地停止线程?

共有1个答案

从劲
2023-03-14

了解“服务何时停止”的确切含义很有帮助我发现了3个与您的问题相关的链接,我相信这些链接将有助于解决您的问题(或至少有助于完全理解您的问题):

TL:DR-如果您正在强制停止,onDestroy()很可能不会被调用。

  • 使用强制停止时未调用Android-Service-onDestroy()方法
  • android服务是否保证调用onDestroy()
  • https://coderedirect.com/questions/231041/situations-when-a-services-ondestroy-method-doesnt-get-called

即使第一个有用,也要通读其余的。

 类似资料:
  • 我有一个实现远程后台服务的应用程序。这个服务是用来下载线程中的文件的(我想说这个服务是作为下载管理器工作的)。 当我想下载一个文件时,我将url发送给服务,服务启动一个线程(我使用的是AsyncTask,但它只在Android4.1中工作)。但下载迟早会停止,我能够知道这一点,因为我显示的通知不再更新。当我单击取消下载的通知时,将向服务发送一个挂起的意图,告诉它取消下载,但当服务重新创建时,将取消

  • 使用8080/8005等命令删除在任何端口、Windows上运行的tomcat服务

  • 主要内容:服务的分类,查询已经安装的服务和区分服务我们知道,系统服务是在后台运行的应用程序,并且可以提供一些本地系统或网络的功能。我们把这些应用程序称作 服务,也就是 Service。不过,我们有时会看到 Daemon 的叫法,Daemon 的英文原意是"守护神",在这里是"守护进程"的意思。 那么,什么是守护进程?它和服务又有什么关系呢? 守护进程就是为了实现服务、功能的进程。比如,我们的 apache 服务就是服务(Service),它是用来

  • 13.系统服务 同其它现代操作系统一样,Android也内置了一系列的系统服务。它们都是随着系统启动,并一直处于运行状态,随时可供开发者访问。比如位置服务、传感器服务、WiFi服务、Alarm服务、Telephony服务、Bluetooth服务等等。 本章介绍几个常见的系统服务,并思考如何将它们应用到Yamba。我们先在一个小例子里引入传感器服务,借以观察系统服务的一般特性,然后通过位置服务为Ya

  • SRS提供多种启动的方式,包括: 在git目录直接启动,简单直接,但系统重启后需要手动启动。 系统服务,init.d脚本:SRS提供srs/trunk/etc/init.d/srs脚本,可以作为CentOS或者Ubuntu的系统服务自动启动。 可以直接下载release的binary,提供了几个常见系统的安装包,安装程序会安装系统服务,直接以系统服务启动即可。参考:Github: release或

  • 我想要在后台运行,即使应用程序被关闭。我的意思是长按Home键->查看所有正在运行的应用程序->把我的应用程序划到一边->应用程序被杀死或者长按Back键->应用程序被杀死 我的代码如下所示。在我的主要活动中: 在我的服务中: 我看到当app打开时服务正在运行。当我通过主页按钮最小化应用程序时,它还在运行。当我通过后退按钮关闭应用程序时,它还在运行。但如果我像上面提到的那样杀了它,它就会停下来。我