• 先说结论:
    3.1之前,可以。
    3.1之后,系统广播不可以。自定义广播可以。
  • 原因:
    在3.1之后,系统的package manager增加了对处于“stopped state”应用的管理,
    所谓“stopped state”就是说该app从未运行过运行过但是现在停止运行了
    同时系统增加了2个Flag:
    FLAG_INCLUDE_STOPPED_PACKAGES
    FLAG_EXCLUDE_STOPPED_PACKAGES
    google在3.1之后给所有的广播都默认加上了FLAG_EXCLUDE_STOPPED_PACKAGES,所以在进程没了的情况下,是收不到广播的。

但是自定义广播的话,我们可以

1
2
3
4
Intent brIntent = new Intent();
brIntent.setAction("uu");
brIntent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(brIntent);

这样手动添加一个flag,就可以了。
所谓葫芦娃保活措施就可以这么搞起来