Android 必知必会 - 根据包名判断 App 运行状态
获取指定包名的 APP 是否还在后台运行,判断 APP 是否存活。
背景
可以根据 App 是否有 Service
分两类情况处理:
- 没有
Service
- 有
Service
对于没有 Service
的 App,程序一旦切换到后台,可能很快就被回收了,这里使用 ActivityManager.getRunningTasks(int maxNum)
方法来获取当前正在运行的任务,注意:此方法并不被系统推荐,且是一个 Deprecated
的方法。
对于有 Service
的 App,大多会有多个 Service
,且有可能都是 :remote
类型的,这样在判断上需要进行一定的处理,这里根据 App 的 uid
来判断,避免在一些特殊的情况下判断存活不准确的问题。我们使用 ActivityManager.getRunningServices(int maxNum)
方法获取当前运行中的 Service
列表。
注意:App 的 uid
对于系统内置 App 而言不是唯一的,Android 内置的应用会有共用 uid
的情况。如果你是开发系统内置应用或者类似的东西,务必要自行进行特殊方式检查。