【问题标题】:Handle app closing event from Launcher's menu从启动器的菜单处理应用程序关闭事件
【发布时间】:2013-06-25 12:25:20
【问题描述】:

我想做的是知道用户何时从 Android 启动器的菜单中关闭应用程序,该菜单在主页按钮长按时打开:

我想在用户关闭应用时做一些操作。

实际上,我希望用户每次离开应用程序时都注销,但只要他也可以在此关闭应用程序,我必须处理此事件然后进行操作。

我试图用谷歌搜索这个,但我找不到任何考虑到这一点的东西。

我不想重写 onStop() 或 onDestroy(),只要用户可能会回到应用程序,在这种情况下我不必进行更改。不要建议这个。我只想在用户完全关闭应用程序时进行更改。

所以我的问题是:

  • 没有onApplicationDestroy()之类的吗?

  • 这样关闭应用时,是否可以与服务器建立连接并传递一些值?

【问题讨论】:

    标签: android android-activity android-lifecycle ondestroy android-recents


    【解决方案1】:

    我想在用户关闭应用时做一些操作。

    这是不可能的。您的进程被简单地终止,没有通知。

    没有类似 onApplicationDestroy() 的东西吗?

    没有。

    当用户以这种方式关闭应用程序时,是否可以与服务器建立连接并传递一些值?

    没有。

    请注意,用户将您的应用从最近任务列表(您在问题中描述的内容)中划出与其他各种情况(包括:

    • Android 终止您的后台进程以释放内存供其他应用程序使用

    • 用户使用第三方任务管理器终止您的后台进程

    【讨论】:

    • 我有服务在应用程序中运行,当应用程序关闭时,我通过可运行处理从服务器获取的异常,并停止我的服务。但只要服务成功销毁,它就会重新启动。 Android 终止了我的应用程序的进程,该服务如何生存并重新启动?
    • @andranikAzizbekyan:“Android 终止了我的应用程序的进程,该服务如何存活并重新启动?” -- 您从onStartCommand() 返回START_STICKYSTART_REDELIVER_INTENT,可能是由于该方法的超类实现。如果您返回START_NOT_STICKY,那么如果Android 由于内存不足而终止您的进程,Android 将不会在稍后内存改善时尝试重新启动您的服务。
    • 是的,我返回了 START_STICKY。这是问题吗?我应该把它改成不粘吗?
    • @andranikAzizbekyan: START_STICKY 表示您特别希望如果您的进程由于内存不足(或模拟内存不足的情况,例如将应用程序从最近的任务列表中滑出)。如果这不是您想要的行为,请使用START_NOT_STICKY
    • @ranjithstar256:如果您想每两小时控制一次,使用AlarmManagerOnly have a service running when it is actively delivering value to the user。坐着看时钟的滴答声不会积极地为用户带来价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-15
    • 1970-01-01
    • 2014-07-06
    • 2012-11-25
    • 1970-01-01
    相关资源
    最近更新 更多