小编Vin*_*len的帖子

如何检测你的Android应用程序是否在前台(API 21)

收到GCM消息时,我的应用程序的行为取决于它是否在前台.在API 21之前,我使用了以下内容:

Boolean onForeground = this.getPackageName().equalsIgnoreCase(
            ((ActivityManager) this.getSystemService(Context.ACTIVITY_SERVICE))
            .getRunningTasks(1).get(0).topActivity.getPackageName()
);
Run Code Online (Sandbox Code Playgroud)

现在,不推荐使用getRunningTasks(),并且在API 21上表现不同,API 21检测我的应用程序是否位于前台的最佳方法是什么?

谷歌推荐

public ActivityManager.RecentTaskInfo getTaskInfo ()
Run Code Online (Sandbox Code Playgroud)

但我不知道如何从那里获得我需要的信息.

先感谢您.


编辑:根据@CommonsWare和@Chris Stratton的提议,我可以跟踪onResume/onPause状态.WebView(我无法控制的内容)导致的应用程序崩溃原因会导致系统处于错误状态.以这种错误的状态发送GCM会导致另一个崩溃混淆用户(他/她当时没有对我的应用做任何事情).

因此,我正在寻找另一种解决方案.(我正在使用Fragments并且只有1个活动,所以实现这个将是微不足道的)

android google-cloud-messaging android-5.0-lollipop

2
推荐指数
1
解决办法
1727
查看次数