我很惊讶!
因为无法识别当前在前台或后台的应用程序,
当我按下主页按钮并且我的应用程序不在前台时。之后我习惯检查在前台运行的应用程序。
public boolean isAppOnForeground()
{
ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
if (appProcesses == null) { return false; }
final String packageName = context.getPackageName();
for (RunningAppProcessInfo appProcess : appProcesses)
{
if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) { return true; }
}
return false;
}
即使我的应用程序实际上不在前台,它也将始终返回 true 。
注意: 我的申请有2项服务, 从最近的任务列表中移除应用程序时,将取消1项服务(我已达到。) 当应用程序进入后台时,将取消2项服务。 (即检查wifi信号强度。)
如何知道应用是前景还是背景?
当应用程序不在前台时如何停止服务?
答案 0 :(得分:3)
依靠Activity
回调方法,例如onPause()
,onStop()
和onResume()
,可以提供有关当前Activity
状态的提示。 Activity reference对每种方法都给出了非常广泛的解释。
答案 1 :(得分:1)
尝试处理活动类的onpause()事件。当活动失焦时调用暂停。