【问题标题】:Android How to know when my app is active right now?Android 如何知道我的应用现在何时处于活动状态?
【发布时间】:2014-05-12 17:24:57
【问题描述】:

我正在构建一个带有通知的应用程序。当有东西来自服务器时,应用程序会发送通知。现在我想在当前应用处于活动状态时将通知的声音静音。

所以我需要知道我的应用何时处于活动状态以及现在处于活动状态的活动。

我在 stackoverflow 上找到了这个答案:

Determining the current foreground application from a background task or service

但这不是我的捷径,因为它需要我 1.获取正在运行的应用列表, 2. 找到当前激活的应用 3.找到现在活跃的活动 4. 检查活动是否是我需要的。

但是我如何才能简单地检查我的应用的活动何时处于活动状态?

希望我能成功地解释清楚自己。

谢谢

【问题讨论】:

标签: android android-activity apple-push-notifications android-notifications


【解决方案1】:

我正在构建一个带有通知的应用程序。当有东西来自服务器时,应用程序会发送通知。现在我想在当前应用处于活动状态时将通知的声音静音。

恕我直言,这不是一个很好的设计选择。如果您的 UI 在前台,则根本不应该有 Notification,而是更新您的 UI 以反映后台发生的任何事件。

所以我需要知道我的应用何时处于活动状态以及现在处于活动状态的活动。

在评论中,njzk2 在活动或通知模式上指向an older blog post of mine。虽然该模式仍然有效,但使用有序广播并不是一个好选择。使用进程内消息总线(LocalBroadcastManager、Square 的 Otto、greenrobot 的 EventBus)会更好地为您服务。

但无论通信渠道如何,基本方法都是相同的:引发一个事件来告诉您的 UI 层(活动和片段)该事件发生了。活动和/或片段在它们处于前台时注册这些事件(例如,onResume()),并在它们不在时注销这些事件(例如,onPause())。如果没有收到事件,请使用“后备”处理程序来检测这种情况并执行回退操作,例如引发 Notification

我有三个示例应用程序使用:

如果您决定确实要强制用户必须处理您的Notification,即使您的 UI 在前台,并且您只想要一个不同配置的 Notification,您将需要跟踪你自己哪个活动在前台,再次通过onResume()onPause()

【讨论】:

  • 如何知道我的应用程序何时处于活动状态。这就是我所需要的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-20
  • 2011-10-07
  • 1970-01-01
相关资源
最近更新 更多