Android中在不同activity中进行自定义广播的解析

相信有不少人和我一样曾经尝试过在同一个项目中的两个activity进行广播,发现怎么都实现不了。我也是困惑了好久才发现,这么搞本来就是不行的。首先在同一个项目下不同的activity之间广播没有意义,因为就像是在同一个app的不同界面进行传递,你在当前的界面给没有创建的界面或者挂起在后台的界面发广播有什么用,你在当前的界面也看不到没有创建的界面或者挂起在后台的界面接收广播后的结果啊。最常见的还是接收系统变化的广播比如没电了之类的,或者是其他的app的广播。而且就实现而言也是很难实现的,你在mainactivity中sendbroadcast,然后startactivity拉起另一个活动,然后finish了mainactivity,在拉起的活动中注册接收器。实际运行时发现另一个活动拉起后,根本就没有接收到发出的自定义的广播(可以在运行日志中看到),原因是广播接收器注册在oncreate或者onpause方法中,广播的发出的过程是 : 调用sendBroadCast方法将intent发送后,该intent会被发送到System.process进程。该进程会对收到的intent进行检查,查看该intent中携带的action值是否与已注册的所有广播中的action值相同。若有相同的action字段则会建立映射表。并将该intent转发给所对应的广播接收器。这实质上就是说,广播的发送一下就结束了,不是夺命连环call,在mainactivity拉起活动之后,活动在实现oncreate方法时广播就结束了,所以广播接收器没有任何的反应。总之,大家就不要搞同一个项目下的activity之间的广播了。

猜你喜欢

转载自www.cnblogs.com/wyx66688/p/10587644.html
今日推荐