当应用程序重新聚焦时,我会获得Android广播或事件吗?

时间:2014-04-14 07:24:07

标签: android

我想在我的Android应用程序恢复焦点或启动时收到通知。棘手的部分是,我不关心在应用程序中切换活动时出现的事件。我感兴趣的活动是:

  • 应用已启动
  • 应用程序在任何活动上重新激活(由用户带回)

我尝试使用onStart()onResume()方法处理它,但是每次加载Activity时它们都会触发并调用onStop,即使它们只是在应用内切换活动

我检查了生命周期(http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle),但是当只在应用程序中切换活动时,甚至会调用onDestroy()

  • 如何确定我的应用程序是否已重新启动或仅切换活动?

2 个答案:

答案 0 :(得分:0)

您必须覆盖Application的{​​{1}}课程,每次打开应用时都会调用一次。

答案 1 :(得分:0)

我想到了两种可能的解决方案,它们都不是很干净。

1)使用计时器

每次使用onPause()方法时,您都会安排一个计时器,在1秒后设置一个标志(或更长的时间,取决于您的确切用例)。在每个onResume()中,检查是否已设置标记,例如您的应用程序处于非活动状态的时间超过计时器间隔。如果设置了标记,则表示用户在onPause()onResume()

之间执行了其他操作

2)手动设置标记

每次在应用程序中的Activities之间触发切换时,都会在应用程序的某处设置标记。在onResume()方法中,检查是否设置了标记,例如交换机是由您的应用程序触发的。如果未设置,则用户来自您的应用程序外部。

然而,这两种方法都不能在可能的用例之间进一步区分。所有这些案例对你来说都是一样的:

  • 用户按下主页按钮并在以后任何时间恢复应用
  • 用户关闭屏幕,然后重新开启
  • 用户接到电话,然后立即返回您的应用

这可能会导致您的应用程序出现意外行为。我不知道你究竟想要使用这种机制,但是你必须非常认真考虑所有可能的情况,如果你想让它们触发你的行为,那么。