Android 安卓cyanogenmod 9.1:x27;别粘乎乎的
我在Cyanogen 9.1(Android 4.0.4)上测试我的Android应用程序,发现了一个奇怪的行为 我的应用程序包含一个BroadcastReceiver,可以监听android.net.conn.CONNECTIVITY\u更改。 根据这个意图是不粘的 但是,当应用程序在CM9.1上启动时,它始终会收到连接更改意图 事实上,系统将此意图列为粘性:Android 安卓cyanogenmod 9.1:x27;别粘乎乎的,android,android-intent,broadcastreceiver,cyanogenmod,Android,Android Intent,Broadcastreceiver,Cyanogenmod,我在Cyanogen 9.1(Android 4.0.4)上测试我的Android应用程序,发现了一个奇怪的行为 我的应用程序包含一个BroadcastReceiver,可以监听android.net.conn.CONNECTIVITY\u更改。 根据这个意图是不粘的 但是,当应用程序在CM9.1上启动时,它始终会收到连接更改意图 事实上,系统将此意图列为粘性: >adb shell dumpsys activity Sticky broadcasts: ... * Sticky ac
>adb shell dumpsys activity
Sticky broadcasts:
...
* Sticky action android.net.conn.CONNECTIVITY_CHANGE
...
在我测试过的其他Android版本(例如NX4上的4.2.1股票Android)上,其目的不是粘性的,在启动时也不会收到,这是正确的行为
这是Cyanogenmod ROM中的错误吗?
当收到粘性意图时,是否有办法知道这是一个旧的意图,而不是由实际的最近事件引起的?
多谢各位
这是氰化物ROM中的一个错误吗
你最好在CM支持板上问这个问题
当接收到一个粘性意图时,有没有办法知道这是一个旧的意图,而不是由实际的最近事件引起的
您可以使用null
BroadcastReceiver
和IntentFilter
调用registerReceiver()
,以获得所需的Intent
结构(例如,android.net.conn.CONNECTIVITY\u CHANGE
操作)。如果返回值为null
,则广播没有粘性,因此您的行为正常
但是,没有好的方法来确定粘性
Intent
的年代,除非该特定Intent
碰巧有某种额外的时间戳。感谢您的提示。但是,如果我为连接更改意图向null BroadcastReceiver注册一个接收器,它总是返回一个意图,从不为null。换句话说,这个技巧可以告诉我,我在一个有bug的操作系统上(因为意图不应该是粘性的),但我仍然无法区分旧的粘性意图和最近的意图。。。