0

我正在 Cyanogen 9.1 (Android 4.0.4) 上测试我的 Android 应用程序,我发现了一个奇怪的行为。

我的应用程序包含一个侦听 android.net.conn.CONNECTIVITY_CHANGE 的 BroadcastReceiver。根据Android 文档,这种意图并不具有粘性。

但是,当应用在 CM9.1 上启动时,它总是会收到一个 CONNECTIVITY_CHANGE 意图。

事实上,这个意图被系统列为粘性:

>adb shell dumpsys activity
 Sticky broadcasts:
...
 * Sticky action android.net.conn.CONNECTIVITY_CHANGE
...

在我测试过的其他 Android 版本上(例如我的 NX4 上的 4.2.1 库存 Android),意图不是粘性的,并且在启动时没有收到,这是正确的行为。

这是 Cyanogenmod ROM 中的错误吗?有没有办法在收到粘性意图时知道它是旧的,而不是由最近的实际事件引起的?

谢谢

4

1 回答 1

0

这是 Cyanogenmod ROM 中的错误吗?

在 CM 支持板上询问您会得到更好的服务。

有没有办法在收到粘性意图时知道它是旧的,而不是由最近的实际事件引起的?

您可以registerReceiver()使用 anull BroadcastReceiver和 an调用IntentFilter您想要的Intent结构(例如,android.net.conn.CONNECTIVITY_CHANGE动作)。如果返回值为null,则广播没有粘性,因此您的行为正常。

但是,没有好的方法可以确定粘性Intent的年龄,除非那个特定Intent的东西恰好有某种额外的时间戳。

于 2013-02-08T15:58:10.577 回答