前言
检测应用是否在后台这个场景是挺常见的。
大概第一想法就是通过Activity Manager判断。
对比am管理的所有activity中最上边的那个所属的包名是否和我们的一致。
- 路径1:am-> getRunningAppProcesses-> 遍历之-> 对比processName和我们的包名同时importance是否是在前台或者后台
- 路径2:am-> getRunningTasks(1)-> 遍历之-> taskList.get(0).topActivity-> 对比包名
别处心裁的方法
- 在application里注册registerActivityLifecycleCallbacks。
- onActivityStarted时,count++
- onActivityStopped,count–
- 看count是否<=0