安卓应用进后台要释放资源、进前台执行一些逻辑(比如执行接口刷数据、打开手势密码、启动服务等等)。
要解决2个问题:
1、 如何判断应用当前是否在前台?
2、如何得到用户按Home键、再次打开应用的事件?
Android5.0之前可以用ActivityManager的getRunningTasks方法, 但5.0及后续版本该方法被注释为@Deprecated。 下面函数可以用来判断app是否在前台, 从Android5.0开始通过判断进程优先级得出是否在前台。PS:进程分为5大优先级:前台进程、可视进城、服务进程、后台进程、空进程等。
/**
* 判断程序是否在前台运行
* @param context
* @return true在前台,false在后台
*/
private boolean isAppForeground(Context context) {
boolean isForground = false;
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
if (Build.VERSION.SDK_INT