Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 没有主应用程序,后台服务能否存在?_Android_Service_Background Service - Fatal编程技术网

Android 没有主应用程序,后台服务能否存在?

Android 没有主应用程序,后台服务能否存在?,android,service,background-service,Android,Service,Background Service,让我们检查下一个场景: 我创建了一个新的android应用程序,包括应用程序类、活动和后台服务 我在应用程序类中有一些静态变量,假设它是一个int I=0 我启动活动,并从活动的onCreate()启动服务,该服务将获得启动标志 此服务所做的一切就是使用TimerTask将当前秒写入应用程序类中的变量。 5.我退出活动 一段时间后,Android将关闭服务和应用程序(假设设备资源不足),并由于START\u STICKY标志重新启动服务 现在我要回答以下问题: 是指操作系统杀死应用程序,但不杀死

让我们检查下一个场景:

  • 我创建了一个新的android应用程序,包括应用程序类、活动和后台服务
  • 我在应用程序类中有一些
    静态
    变量,假设它是一个int I=0
  • 我启动
    活动
    ,并从活动的
    onCreate()
    启动
    服务
    ,该服务将获得
    启动标志
  • 服务所做的一切就是使用TimerTask将当前秒写入应用程序类中的变量。
    5.我退出活动
  • 一段时间后,Android将关闭服务和应用程序(假设设备资源不足),并由于
    START\u STICKY
    标志重新启动服务
  • 现在我要回答以下问题:

  • 是指操作系统杀死应用程序,但不杀死服务的情况吗
  • 当系统重新启动服务时,应用程序是否也会重新启动? 如果是-它将具有哪种上下文,如果不是,怎么可能有一个服务在没有他的应用程序的情况下运行
  • 谢谢,很抱歉我的英语很糟糕

    是指操作系统将终止应用程序,但不会终止应用程序的情况 服务

    是的,在这种情况下,通常服务会在活动之后终止,因为它们需要从系统读取最后的资源

    当系统重新启动服务时,应用程序 还要重新启动吗


    我不确定这一点,但我认为没有,因为没有应用程序引用,服务可以生存

    托默·莫尔的回答是不正确的

    当您的
    应用程序
    死亡时,您的
    服务也将死亡

    只有在
    应用程序
    之后,才会创建
    服务。
    您可以通过记录他们的
    onCreate()

    1来观察自己。是否存在这样的情况:操作系统杀死应用程序,但不杀死服务? tl;dr:是的,这是可能的。但是,
    服务必须在自己的流程中启动

    解释: 必须认识到,Android操作系统在内存不足时会杀死进程,而不是单个组件,例如
    活动
    服务
    ()

    鉴于上述陈述,很明显,
    服务
    可以独立于
    应用程序
    而存在,前提是它们包含在单独的进程中。否则,当进程被破坏时,它们将一起被破坏

    现在考虑在分离过程中存在的“代码>服务< /代码>和<代码>应用程序>代码>。在Android中,进程在低内存情况下从最低优先级到最高优先级被破坏。优先级顺序为:()。因此,您的

    应用程序
    可能会在
    服务
    保持活动状态时被销毁(例如,如果您的应用程序位于后台),您的
    服务
    也可能在应用程序保持活动状态时被销毁(应用程序位于前台)

    通过在components manifest标记中定义属性,可以声明应用程序的任何组件(活动、服务、ContentProvider等)以在其自己的进程中运行

    从官方文件:

    默认情况下,同一应用程序的所有组件都在同一进程中运行,大多数应用程序不应更改此设置。但是,[…]每种类型的组件元素的清单条目-
    活动
    服务
    接收者
    提供者
    -支持一个
    android:process
    属性,该属性可以指定该组件应该在其中运行的进程。您可以设置此属性,使每个组件在其自己的进程中运行,或者使某些组件共享一个进程,而其他组件则不共享。[…]元素还支持android:process属性,以设置应用于所有组件的默认值


    2。当系统重新启动服务时,应用程序是否也会重新启动? 这与问题1中的答案有关

    如果
    服务
    应用程序
    存在于同一进程中,则它们都将被销毁并一起重新启动

    如果
    服务
    作为
    应用程序
    存在于一个单独的进程中,那么它们是完全独立的进程,因此将被销毁,并在Android操作系统认为合适时独立重新启动