【问题标题】:How do I know when an Android app is launched and destroyed?我如何知道 Android 应用程序何时启动和销毁?
【发布时间】:2015-04-06 16:15:20
【问题描述】:

当应用程序启动和完全退出(被销毁)时,我需要运行一些代码。我正在使用 onCreate 和 onDestroy 但不幸的是屏幕方向更改会破坏并重新创建活动。

【问题讨论】:

  • 在您的清单中指定您处理配置更改(潜在的列表随着每个 API 版本的发布而变长)。请注意,虽然不能保证该进程将存活足够长的时间以调用 onDestroy()。

标签: android exit launch


【解决方案1】:

看看Android应用http://developer.android.com/reference/android/app/Application.html

您可以知道应用程序何时创建(Application.onCreated)

但是您不知道应用程序何时销毁。 Application.onTerminate() 仅用于模拟进程环境。

【讨论】:

【解决方案2】:

每次应用启动时,您的 启动器活动onCreate 方法都会被调用。因此,您必须将所需的代码放入 Launcher 活动的 onCreate 方法中。

要检测您的应用程序是否被破坏,您可以从 Override unimplemented method 菜单中使用 override onDestroy 方法(就像添加 onCreate 一样)。并把你想在应用销毁时执行的代码放在这个方法里面。

【讨论】:

  • 这不起作用,因为当屏幕方向改变时,Activity 被销毁并重新创建。在这些实例中,我不会在 onCreate 和 onDestroy 中运行我的代码。
  • 您想修正屏幕方向还是要求在您的应用中保持方向功能启用?
  • 在应用中保留方向功能所必需的
【解决方案3】:

如果您的代码可以在后台发生(如果您需要在 UI 线程上发生某些事情,则无法工作),您可以试试这个:

让您的活动持有对您扩展的线程的引用,我们称之为 MyThread 运算符。

在 onCreate 中,这样做:

if(operator==null){
    operator = new MyThread();
    operator.start();     
}

然后,在 MyThread 中,将您的代码放入 run()interrupt() 两个方法中。

当您的活动通过方向更改重新创建时,它将保持操作员对您的后台线程的引用。当您真正关闭您的应用程序时,android 将在几秒钟后终止您的操作员并因此执行您的代码。

如果我错了,请高人指正,我最近没睡太久,线程总是一个复杂的话题......

【讨论】:

    猜你喜欢
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多