bug修复系列之Can't use FLAG_RECEIVER_BOOT_UPGRADE here

一、前言

博主决定,在接下来的开发工作中,遇到bug麻烦,在解决之后都会写一篇博文来进行总结,虽然琐碎,但是我愿意不厌其烦的记录下来,不为别的,就为了能够使自己有所收获,当然最好也能够帮助后来人迅速的解决类似的问题。

我现在的项目是从离职的同事接手过来的,项目框架和代码细节都没怎么理清,昨天测试的同事发现了一个bug,然后让我进行修复。当时我没有仔细研究bug就跟他说了我的各种“猜测”,现在回想起来让我有些后悔.....在遇到问题的时候先别找各种理由,应该先研究再跟他人讲,要不然就是态度的问题。

还有,就是解决问题的思路,一定要从bug处开始,顺藤摸瓜,并对症下药的把问题一步步的解决了,不要胡乱的猜测,这样只会浪费时间。下面进入正题:


二、bug内容及原因

java.lang.IllegalArgumentException: Can't use FLAG_RECEIVER_BOOT_UPGRADE here
at android.os.Parcel.readException(Parcel.java:1544)
at android.os.Parcel.readException(Parcel.java:1493)
at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:2963)
at android.app.ContextImpl.sendBroadcast(ContextImpl.java:1703)
at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:391)
at com.mozillaonline.providers.downloads.DownloadService$UpdateThread.run(DownloadService.java:289)

出现bug的原因是,在发送广播时不要给Intent设置任何的FLAG_ACTIVITY_相关的flag


三、延伸

(一)Intent 添加FLAG的作用

在Intent中addFlags()的作用是起到控制Activity栈的作用,有点类似于Activity的启动模式,如FLAG_ACTIVITY_SINGLE_TOP相当于加载模式中的singleTop

(二)android:exported="false"的作用

是否允许该组件(如Activity、Service、BroadcastReceiver、ContentProvider)被其它应用程序调用。

(三)long转int:int mInt = (int)mLong;  (够二的偷笑

猜你喜欢

转载自blog.csdn.net/zhangdongren/article/details/45071941