Android 中的Force Close
今天写程序时遇到一个问题,领导希望在点击了setting里的force close 后,程序依然能够响应以前用alarmManager注册的receiver。
在网上看到了一些文章,写的是如何建立一个无法被force close的service,目前,没能找到好用的方法,可能他们的方法是针对老版本的sdk的,而我使用的是4.0版本的sdk。例如,有一篇文章说的是利用系统的android.intent.action.TIME_TICK来每分钟检查service,但是根据我的测试,程序在force close后,它根本接受不到android.intent.action.TIME_TICK这条broadcast,也就不用再想其他问题了。又比如,有人说通过监听Intent.ACTION_PACKAGE_RESTARTED可以,但实际情况是,这条broadcast也是无法被监听到的!
之后参看了一下stackoverflow,找到了答案,以下是原文
Hello Everybody, I´m having the following issue.
The ApplicationManager is killing the process of my application when the user presses on "FORCE STOP" on the Aplication Manager.
MENU-> SETTINGS -> APPLICATIONS -> MANAGE APPLICATIONS -> My APP .> FORCE STOP.
According to the documentation a broadcast action is sent: Intent.ACTION_PACKAGE_RESTARTED Broadcast Action: The user has restarted a package, and all of its processes have been killed. All runtime state associated with it (processes, alarms, notifications, etc) should be removed. Note that the restarted package does not receive this broadcast. The data contains the name of the package.
另外的一遍文章说,如果你进行了force close,相应的程序就不能接受到任何broadcast了,比如开机启动的广播。如果想能够接受到开机启动的广播,必须手动启动这个应用程序,那么下一次开机时,程序才能正确响应开机的广播。这个需要验证一下,验证后,把结果发上来。---------经过验证了,是这样的!force close后,重启手机,目标程序对于android.intent.action.BOOT_COMPLETED这样的广播也接收不到了,手动启动程序后,不进行force close,再次重启,程序就又可以接收到这条广播了。(我这里的重启是通过拿下电池的重启,是真正的断电重启,不是用软件关闭手机,再打开手机。貌似用手机中的“重新启动”,也可以达到一样的效果。)
Android 中的Force Close的更多相关文章
- Android中对Log日志文件的分析[转]
一,Bug出现了, 需要“干掉”它 bug一听挺吓人的,但是只要你懂了,android里的bug是很好解决的,因为android里提供了LOG机制,具体的底层代码,以后在来分析,只要你会看bug, a ...
- Android中的sharedUserId属性详解
在Android里面每个app都有一个唯一的linux user ID,则这样权限就被设置成该应用程序的文件只对该用户可见,只对该应用程序自身可见,而我们可以使他们对其他的应用程序可见,这会使我们用到 ...
- Android中@id与@+id区别
Android中的组件需要用一个int类型的值来表示,这个值也就是组件标签中的id属性值. id属性只能接受资源类型的值,也就是必须以@开头的值,例如,@id/abc.@+id/xyz等. 如果在@后 ...
- android中的一些问题
1. Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念 DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚 ...
- 【转】【已解决】Android中ActionBar中不显示overflow(就是三个点的那个按钮)--不错
原文网址:http://www.crifan.com/android_actionbar_three_dot_overflow_not_show/ [问题] 折腾: [记录]继续尝试给Android程 ...
- Android中的Apk的加固(加壳)原理解析和实现
一.前言 今天又到周末了,憋了好久又要出博客了,今天来介绍一下Android中的如何对Apk进行加固的原理.现阶段.我们知道Android中的反编译工作越来越让人操作熟练,我们辛苦的开发出一个apk, ...
- Android ANR、Force Closed(转)
ANRs (“Application Not Responding”),意思是”应用没有响应“. 在如下情况下,Android会报出ANR错误: – 主线程 (“事件处理线程” / “UI线程”) 在 ...
- Android中如何像 360 一样优雅的杀死后台服务而不启动
Android中,虽然有很多方法(API或者shell命令)杀死后台`service`,但是仍然有很多程序几秒内再次启动,导致无法真正的杀死.这里主要着重介绍如何像 360 一样杀死Android后台 ...
- Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析
转自:http://www.uml.org.cn/mobiledev/201211221.asp 今天,我着重讲解下如下三个内容: measure过程 WRAP_CONTENT.MATCH_PAREN ...
随机推荐
- JS模式:简单的图书馆享元模式
<!DOCTYPE html> <html> <head> <title></title> </head> <body&g ...
- Maven-在eclipse创建maven项目
在eclipse使用maven则需要给eclipse安装maven插件,具体安装maven插件安装相关文章 构建Maven项目 以eclipse3.6为例 1)创建简单Maven项目 点击Eclips ...
- Java-集合类汇总
结构图: Collection ├List │├LinkedList │├ArrayList │└Vector │ └Stack └Set Map ├Hashtable ├HashMap └WeakH ...
- Opencv加载和显示图片
#include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <ios ...
- POJ3070Fibonacci(矩阵快速幂+高效)
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11587 Accepted: 8229 Descri ...
- shell与变量的声明的操作
1.给命令起别名:alias 执行下面命令后,可以使用dir代替ls –l 命令,显示目录中的文件详细信息: 还可以用一个别名表示几个命令 的结合: 2.ps:显示当前登录会话的所有活动进程: 3.更 ...
- autofac 初步学习
//数据处理接口 public interface IDal<T> where T : class { void Insert (T model); void Update(T model ...
- App接口中json方式封装通信接口
封装json通信接口的类 <?php class Response{ /** * 按json方式输出通信数据 * @param integer $code状态码 * @param string ...
- Jquery的初识
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Yii2 如何使用事件
原文地址:http://www.fancyecommerce.com/2016/04/29/yii2-%E4%BD%BF%E7%94%A8event-1-%EF%BC%8C%E5%A6%82%E4%B ...