此前做状态栏通知的时候需要知道应用是否出于后台(按home键退出是之后处于后台),因此试了几种方式来判断。最后有两个方法能满足我的需求。
一个是使用一个flag标识,在onPause方法和onResume方法中分别做处理(不理解的请去看activity和fragment的生命周期)。这种方式只适合只有一个activity,如果是多个activity估计比较难办到,我也没试过。
另外的方法就是通过进程来判断。借助ActivityManager获取正在运行的应用进程,遍历获取到的进程集合,判断进程的名字和APP的报名是否相同。如果相同的话,再通过判断importance来得知应用是出于前台还是后台。
/*按home键之后到后台 有的手机只有一个按键(魅族,我用魅蓝note2测试),按了home键之后,未必能通过此方法准确判断其是否出于后台
*因此,最好双重保险,在onpause方法中加一个标识,结合此方法做双重判断。
*或者如果光是在onPause中加标识就能满足需求的话,就不必要使用此方法
*/
public static int isBackground(Context context,String packageNam