Android中“强制停止”和广播保活的一个小坑

转载注明出处:简书-十个雨点

一直以来,使用广播进行Android进程的保活就是一种常规的保活方法,本着用事实说话的原则,我做了一个实验:

  1. 写了一个demo,用于监听来电的广播,然后选择接听和挂断电话,源码见;github,AcceptOrRejectCallDemo
  2. 运行程序,用另一个手机给测试手机打电话,发现能收到广播,完成功能;
  3. 在应用程序管理器中,强制停止这个demo,然后再用另一个手机给测试手机打电话,发现无法收到广播。

我在5台不同品牌的手机上重复了相同的实验,结果一致。由此,似乎可以得出结论——广播保活不靠谱。当然如果这个实验就这么结束了,那也太短了,男人可不能短,接着看。

后来我看到了这篇文章论Android应用进程长存的可行性,作者几乎介绍了所有已知的进程保活方法,让我打开眼界,不过引起我注意的其实是下面这段话:

STOPPED状态

我突然就想到,应用程序管理器中的“强制停止”功能,会不会默认添加了“STOPPED”状态呢,所以导致广播失效呢?

于是我又进行了一次实验:

  1. 还是那个AcceptOrRejectCallDemo,在BroadcastReceiver的描述中添加intent-filter: android.intent.action.BOOT_COMPLETED
  2. 运行程序,在adb下使用kill命令杀死AcceptOrRejectCallDemo的进程,确保ps命令的结果中没有AcceptOrRejectCallDemo的进程运行,拨打电话,能收到广播,功能正常,此时再使用ps命令,发现又生成了AcceptOrRejectCallDemo的进程了。
  3. 重启手机,ps命令的结果中没有AcceptOrRejectCallDemo的进程运行,查看应用程序管理器,发现AcceptOrRejectCallDemo中的“强制停止”选项可选,表明可以停止,而且此时接到电话的时候收到广播;
  4. 将AcceptOrRejectCallDemo“强制停止”,重启手机,ps命令的结果中没有AcceptOrRejectCallDemo的进程运行,查看应用程序管理器,发现AcceptOrRejectCallDemo中的“强制停止”选项不可选,表明不能停止,而且接到电话的时候不能收到广播;
  5. 打开AcceptOrRejectCallDemo后,退出,在最近的任务中杀AcceptOrRejectCallDemo进程,ps命令的结果中没有AcceptOrRejectCallDemo的进程运行,然后查看应用程序管理器,发现AcceptOrRejectCallDemo中的“强制停止”选项可选,表明可以停止,而且此时接到电话的时候收到广播。

以上几步实验可以表明:

  • 在最近的任务中杀进程,和使用kill命令杀进程,效果一致;
  • 杀死AcceptOrRejectCallDemo进程后,还是能够接收到系统广播的;
  • 被“强制停止”以后,无法接收系统广播,也无法自启动,事实上此时应用是也是处于STOPPED状态的,详情请参考Android设置中“强行停止”详解

总结和感慨

至此得出的结论是:
广播保活还是比较靠谱的,毕竟一般用户不会去“强制停止”,虽然我一开始也误以为是结束其下所有进程的意思。。。

其实“强制停止”的英语是“Force Stop”,如果了解STOPPED状态的人,可能会立刻就明白这是做什么用的了。后来我百度“强制停止”的时候,也发现了有人分析过强制停止对广播的影响。不过如果没有接触过STOPPED概念的人,或者没有在开发中遇到相关的坑的人,可能很难想到“强制停止”其实并不只是杀进程,所以也就不会去百度相关的资料了,可见误解甚至是一知半解是多么的可怕。

我们做开发工作的,不但要在遇到问题的时候能够解决问题,还应该在各个方面多积累,在遇到问题的时候才能能立刻找到方向。总之一句话:多读书!!!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,716评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,558评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,431评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,127评论 0 209
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,511评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,692评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,915评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,664评论 0 202
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,412评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,616评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,105评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,424评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,098评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,096评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,869评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,748评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,641评论 2 271

推荐阅读更多精彩内容