收到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个活动,所以实现这个将是微不足道的)