【问题标题】:Android Application On Exit Event [closed]Android应用程序退出事件[关闭]
【发布时间】:2012-06-30 10:52:38
【问题描述】:

我在应用程序退出处理方面需要一些帮助。 我的应用程序有多个 Activity 说: - EntryAct,Act1,Act2 .... Act10。

当用户在这些活动中按主页键时,我需要进行一些标志设置。

不可能在每个应用程序 Activity 中处理 home 键! 有人能告诉我这是如何实现的吗?

无法更改所有活动 Act1...Act10 的 OnPause、OnStop 或 OnDestory 中的任何内容。 :-(

【问题讨论】:

    标签: android


    【解决方案1】:

    如果您使用自定义应用程序类,您的问题可以得到解决。说喜欢

    public class MyApp extends android.app.Application
    {
    }
    

    并在其中放置您想要在应用中的任何位置调用的代码。

    现在只需要像这样在Activity 中获取应用程序对象

    MyApp app = (MyApp) getApplication();
    app.setUpBeforeClosingApp();
    

    您可以将其放入每个onDestroy() Activity 中,并从此处进行代码处理,然后才能实现关闭操作。

    【讨论】:

    • 为什么不直接创建一个单例并将 setUpBeforeClosingApp 函数放在那里呢?既然这个函数是自定义的,那么 Application 对象除了自定义的单例之外还有什么权力呢?
    • 请记住,OnDestroy 不能保证触发
    【解决方案2】:

    在 Activity 不在前台时立即调用的 onPause() 方法中执行此操作。

    【讨论】:

      【解决方案3】:

      首先,可以通过间接方式检测 home 键事件,如我关于在按下 home 键时杀死应用程序的帖子中所示:How to close Android application?

      还可以在其 onDestroy() 方法中确定一个活动是否是根活动,然后如果它是根活动,则让它调用一个辅助类来执行最终处理。更好的是创建一个所有活动都继承自的自定义活动,将最终处理逻辑放在自定义活动的 onDestroy() 方法中,然后让所有子类在其 onDestroy() 方法中调用 super.onDestroy()。这与上述帖子中所做的类似:How to close Android application? 以及有关在按下菜单按钮时创建设置屏幕以及处理搜索按钮和返回按钮的帖子。

      我希望这会有所帮助。

      【讨论】:

      • 最佳解决方案是:moveTaskToBack(true); android.os.Process.killProcess(android.os.Process.myPid()); System.exit(1);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 1970-01-01
      • 2012-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多