Android 根据包名判断 App 运行状态
来源:互联网 发布:淘宝自动上架怎么设置 编辑:程序博客网 时间:2024/05/29 18:16
转载自http://blog.csdn.net/ys743276112/article/details/54912894
获取指定包名的 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
的情况。如果你是开发系统内置应用或者类似的东西,务必要自行进行特殊方式检查。
实现
下面是几个工具类,在正式使用的时候需要配合使用,才能覆盖全部情况:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
在正式使用的时候结合两者即可:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
总结
在探索验证程序存活的过程中,发现 ActivityManager.RunningServiceInfo
包含很多信息,一开始我是使用其 process
和 started
属性来判断,其中 process
对应包名,但是对于只有 :remote
类型 service
时,则判定不了。
- Android 必知必会 - 根据包名判断 App 运行状态
- Android 根据包名判断 App 运行状态
- Android通过包名或类名启动APP或者一个Activity 以及 判断APP的运行状态
- Android 根据包名判断app是否安装
- Android根据包名启动其他app
- Android根据包名清理App数据
- Android 判断App前后台运行状态
- Android判断App前台运行还是后台运行(运行状态)
- Android获得当前前台运行的app包名
- 根据进程名判断进程是否运行
- 根据窗口句柄判断程序运行状态
- 如何根据Android 运行时的进程名找到对应APK包路径
- 如何根据Android 运行时的进程名找到对应APK包路径
- android根据包名打开apk应用
- Android根据包名 启动 删除 应用
- android中根据包名启动apk
- Android 根据包名获得主activity
- Android根据包名启动应用
- leetcode 1. Two Sum
- leetcode--寻找规律题,统计总数之类题目--待更
- 正则表达式
- 如何构建Android MVVM应用程序
- 我心中的AI
- Android 根据包名判断 App 运行状态
- MySql高级查询
- junit4的基本注解
- linux tar.gz 文件压缩,解压
- eclipse下如何导入和删除jar包
- learning之策略模式
- java断言
- day07之包含min函数的栈+查找一个字符串中第一个只出现两次的字符
- 史上难得的自定义效果——屏幕中随机出来十个头像不重叠