一、前言
博主决定,在接下来的开发工作中,遇到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; (够二的)