Android--程序的停止状态
2017-12-27 10:59
197 查看
参考博客:https://zhuanlan.zhihu.com/p/25071228
②程序的停止状态和Activity的停止状态不同,系统会分开处理这两种状态;
③Android平台提供了两个Intent flag用来让广播发送方决定广播是否需要同时发送给已经停止的程序。
FLAG_INCLUDE_STOPPED_PACKAGES -- 将已经停止的程序加入到能处理intent的目标处理者。
FLAG_EXCLUDE_STOPPED_PACKAGES -- 在能处理intent的目标处理者中不包括已经停止的程序。
2、为什么要引入停止状态?
系统会默认为所有广播添加FLAG_EXCLUDE_STOPPED_PACKAGES,目的是阻止来自后台服务的广播不慎启动了处于停止状态的不必要的组件。是为了保证安全和省电需要,如网络变化的广播,若某些程序注册监听,并且它在接收到广播时,做一系列的网络操作,会很耗能源。
3、激活状态与停止状态的切换
当程序第一次安装,并且没有启动,或者手动从程序管理器将其停止后,程序都会处于停止状态。
如何变为停止状态
如何脱离停止状态
4、如何发送广播intent给处于停止状态的应用?
在Java代码发送Intent时,加入flag FLAG_INCLUDE_STOPPED_PACKAGES;
如果使用adb,同样是加入FLAG_INCLUDE_STOPPED_PACKAGES(其具体值为32 如adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -f 32
5、如何检查是否处于停止状态?
进入设置—应用管理—某个应用的详细页,如果强制停止按钮不可用,则说明程序已经处于停止状态;
进入设备终端,查看系统文件cat /data/system/packages-stopped.xml
6、如果应用中只有组件BroadcastReceiver,而无Activity,应该如何激活才能正常收到广播?
实际上,如果是上面所述的情况,该应用在安装之后不是处于停止状态,因为它没有任何用户可以直接点击的行为去将它移除停止状态.
你可以正常接收广播intent,除非你人为地将它强制停止.
7、系统的程序刚刚安装时是否处于停止状态?
系统的程序通常会存放在
/system/app目录下,在一开始安装之后不会处于停止状态.
1、什么是停止状态?
①Android3.1开始,Package Manager开始跟踪处理停止状态的程序,并提供了从后台进程或其他程序对它们启动的方法;②程序的停止状态和Activity的停止状态不同,系统会分开处理这两种状态;
③Android平台提供了两个Intent flag用来让广播发送方决定广播是否需要同时发送给已经停止的程序。
FLAG_INCLUDE_STOPPED_PACKAGES -- 将已经停止的程序加入到能处理intent的目标处理者。
FLAG_EXCLUDE_STOPPED_PACKAGES -- 在能处理intent的目标处理者中不包括已经停止的程序。
2、为什么要引入停止状态?
系统会默认为所有广播添加FLAG_EXCLUDE_STOPPED_PACKAGES,目的是阻止来自后台服务的广播不慎启动了处于停止状态的不必要的组件。是为了保证安全和省电需要,如网络变化的广播,若某些程序注册监听,并且它在接收到广播时,做一系列的网络操作,会很耗能源。
3、激活状态与停止状态的切换
当程序第一次安装,并且没有启动,或者手动从程序管理器将其停止后,程序都会处于停止状态。
如何变为停止状态
a、在设置应用管理中的应用详情页点击强制停止 b、使用adb shell am force-stop package-name c、使用ActivityManager的隐藏方法forceStopPackages,并且向manifest加入申请权限 <uses-permission android:name=“android.permission.FORCE_STOP_PACKAGES”/>
如何脱离停止状态
a、手动启动程序 b、使用adb激活应用组件,如activity或者receiver
4、如何发送广播intent给处于停止状态的应用?
在Java代码发送Intent时,加入flag FLAG_INCLUDE_STOPPED_PACKAGES;
如果使用adb,同样是加入FLAG_INCLUDE_STOPPED_PACKAGES(其具体值为32 如adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -f 32
5、如何检查是否处于停止状态?
进入设置—应用管理—某个应用的详细页,如果强制停止按钮不可用,则说明程序已经处于停止状态;
进入设备终端,查看系统文件cat /data/system/packages-stopped.xml
6、如果应用中只有组件BroadcastReceiver,而无Activity,应该如何激活才能正常收到广播?
实际上,如果是上面所述的情况,该应用在安装之后不是处于停止状态,因为它没有任何用户可以直接点击的行为去将它移除停止状态.
你可以正常接收广播intent,除非你人为地将它强制停止.
7、系统的程序刚刚安装时是否处于停止状态?
系统的程序通常会存放在
/system/app目录下,在一开始安装之后不会处于停止状态.
相关文章推荐
- Android中程序的停止状态详细介绍
- Android中程序的停止状态详细介绍
- 你造么,Android中程序的停止状态
- android ScrollView滚动距离和判断滚动停止状态
- android看不见main函数怎么办?程序异常了,能够不提示“xxx软件停止执行”吗?
- android 卸载程序、清除数据、停止服务使用方法
- java程序监控tomcat中部署的项目的状态以及控制某些项目的启动停止
- Android -- 程序判断手机ROOT状态,获取ROOT权限
- Android 推断程序在手机中是否是活动状态或者正在执行状态
- android app程序停止运行
- Android推断程序前后台状态
- android脚步---如何看log之程序停止运行,和UI线程和非UI线程之间切换
- Android中服务的开启和停止的方式以及各种情况下的存活状态
- linux网卡状态程序移植到android无法使用getifaddrs的问题
- Android_程序判断手机ROOT状态,获取ROOT权限
- Android选择本地图片过大程序停止的经历
- android 卸载程序、清除数据、停止服务使用方法
- Android ScrollView滚动距离和判断滚动停止状态
- Android: 按了back按键后程序完全停止了吗?
- Android程序退出后音乐不停止