Android 如何知道应用程序何时完成?

Android 如何知道应用程序何时完成?,android,service,Android,Service,我需要知道应用程序何时完成以停止它启动的所有本地服务 我该怎么做呢?一个想法是使用BoundService,尽管它是你的应用程序自己的服务。根据定义,las连接断开时,绑定服务停止 另一个想法是在应用程序对象中定义计数(您可以覆盖全局应用程序对象)。您可以在每次onResume中递增计数,在每次onPause中递减计数 您可以在main函数中使用try/finally,并在最后一个块中进行服务清理 您可以使用对象终结器发出关闭命令。由于垃圾收集器将以自己的速度运行,因此您无法确切地知道它何时发生

我需要知道应用程序何时完成以停止它启动的所有本地服务


我该怎么做呢?

一个想法是使用BoundService,尽管它是你的应用程序自己的服务。根据定义,las连接断开时,绑定服务停止

另一个想法是在应用程序对象中定义计数(您可以覆盖全局应用程序对象)。您可以在每次onResume中递增计数,在每次onPause中递减计数

  • 您可以在main函数中使用try/finally,并在最后一个块中进行服务清理

  • 您可以使用对象终结器发出关闭命令。由于垃圾收集器将以自己的速度运行,因此您无法确切地知道它何时发生,但您知道它最终会发生


  • 您可以尝试使用
    onDestroy()
    (但不推荐使用)来了解Android何时从内存中清理您的应用程序。或者也可以使用
    onStop()
    了解活动何时在后台发送。
    在活动堆栈的第一个活动中实现这两个方法


    让我们看看它是否有帮助,因为我到目前为止还没有尝试过。

    我现在正在解决同样的问题,我有一个想法并将实施它: 1.调用的静态变量(字符串currentShownActivity)。 2.在每个活动(onResume())中,我用活动名(Activity name)填充变量。因此,当我在活动之间导航时,currentShownActivity变量已更改,并带有当前活动名称。 3.在每个onPause()上,设置标记onPause()调用的活动的标志(即布尔值IsPauseCalled) 4.在onStop()中,选中IsPauseCalled和活动名称。 如果调用了暂停时的活动且currentShownActivity中的名称未更改(这意味着我们将该活动保留为“无活动”),则表示按下了[主页]键


    了解应用程序未运行的集成方法检查主活动的存储。

    您能解释第一点吗?我已将服务与活动绑定,但我需要在应用程序完成时完成服务,而不是活动。是的,我很匆忙。。全球计数恐怕不是一个解决方案。。可能是全局应用程序的最终完成?为什么不推荐onDestroy?因为只有当您的活动从内存中清除时,它才可能被调用。你可能不确定这是什么时候发生的