【问题标题】:What method is being called when I close an app关闭应用程序时调用什么方法
【发布时间】:2014-09-05 18:01:47
【问题描述】:

我阅读了有关活动生命周期及其方法的所有内容。

我还是找不到答案: 当我关闭我的应用程序时,从“打开应用程序”菜单(在galaxy4中是长按主页按钮,在nexus5中是右键...)正在调用什么方法?有的话?

换句话说,我的活动是启动一项服务。 如果应用程序(活动)正在关闭,我想终止服务。 (onDestory 根本不可靠,就像之前多次说的那样)

提前致谢!

【问题讨论】:

  • onStop() 总是被调用
  • 自己测试:在两个方法上设置断点:onDestroy 和 onStop
  • 你会从这个链接找到答案stackoverflow.com/questions/24163541/…
  • @BhaveshJethani 是对的...onStop() 确实总是被调用,但只要应用程序进入后台。所以这是停止/取消绑定服务的错误位置。似乎您的服务需要检查“他的”活动是否还活着。
  • @SvenMenschner 谢谢!

标签: android android-activity activity-finish


【解决方案1】:

onPause() 是唯一始终被调用的方法。从 onPause() 状态开始,Android 操作系统可以绕过 onStop 和 onDestroy 杀死这个应用程序。我认为我们无法顺利控制这种意外终止的行为。服务可以定期检查应用程序的状态。

【讨论】:

    【解决方案2】:

    您将通过onPause() 然后onStop()。在Honeycomb (API 11) 之前的设备上,您的应用程序可以在onPause() 返回后的任何时间被终止。不再调用任何方法,期间。蜂窝后你至少会得到onStop()

    【讨论】:

    • 我忘了提到我只希望当有人停止\杀死我的应用程序时才会出现这种行为。据我了解 - onStop 将在许多其他情况下被调用,在这些情况下我不想终止服务。
    • 当任务管理器杀死你的应用时,你不会收到任何通知。当您的活动不再处于前台时,您会收到onStop(),那么您的进程可以随时被终止。
    【解决方案3】:

    用生命周期活动定位,一个建议:http://developer.android.com/training/basics/activity-lifecycle/stopping.html

    系统在 onStop() 和最后一个 onDestroy() 之后调用 onPause()。您必须分析包含您的方法的最佳形式。请注意这一刻。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2017-02-26
      • 1970-01-01
      相关资源
      最近更新 更多