0

Android アプリを Cyanogen 9.1 (Android 4.0.4) でテストしていると、奇妙な動作が見つかりました。

私のアプリには、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

これはCyanogenmodROMのバグですか?

CMサポートボードでそれを尋ねる方がよいでしょう。

スティッキーな意図を受け取ったときに、それが実際の最近のイベントに起因するのではなく、古いものであることを知る方法はありますか?

目的の構造(アクションなど)についてregisterReceiver()は、null BroadcastReceiverとを使用して呼び出すことができます。戻り値が、の場合、ブロードキャストはスティッキーではなかったため、正常に動作しています。IntentFilterIntentandroid.net.conn.CONNECTIVITY_CHANGEnull

ただし、特定のタイムスタンプに余分なタイムスタンプがIntentない限り、スティッキーの古さを判断する良い方法はありません。Intent

于 2013-02-08T15:58:10.577 に答える