ドキュメント エラー: Android 8.0 でマニフェスト登録されたブロードキャスト レシーバーが ACTION_SHUTDOWN インテントを受信する

click fraud protection

Android Oreo では、Manifest Registered Broadcast インテントは少数に限定されており、ACTION_SHUTDOWN はその 1 つではありません。

Android はさまざまな目的でブロードキャスト インテントを使用します。 アプリ開発者は、SD カードがいつストレージとしてマウントされたかをアプリケーションが知るために MEDIA_MOUNTED ブロードキャスト インテントを使用するなど、特定のアクションの実行をリッスンできます。 アプリ開発者は、このためにブロードキャスト レシーバーをプログラムし、メディアがマウントされるたびに関数を呼び出すことができます。たとえば、アプリのデフォルトのストレージ ディレクトリを SD カードに変更します。 このようなことにブロードキャスト インテントが使用されます。 これらは主に、特定のシステム イベントをその情報を必要とするアプリケーションにブロードキャストするために使用されます。 ブロードキャスト レシーバーは、Android マニフェスト ファイルに登録するか、フォアグラウンドでプログラム的に登録する必要があります。

さまざまな開発者があらゆる種類のブロードキャストを実装することによって引き起こされる大量のメモリ スラッシングが原因 頻繁に実行されるインテントのレシーバーに問題があったため、Google は Android でこれらのブロードキャスト インテントのほとんどへのアクセスを制限することを決定しました。 8.0オレオ。 ただし、同社は、放送に使用しても問題のない重要な放送意図がいくつかあることを認識していました。 それほど頻繁に発生するものではないため、記憶を引き起こす可能性がほとんどないため、まだ注意が必要です。 問題。 彼らは 暗黙的ブロードキャストのホワイトリストを公開しました Android マニフェストにブロードキャスト レシーバーを登録することで、Android アプリケーションが引き続きインテントをリッスンできるようになります。 これは広範なリストであり、1 つの例外を除いて、アプリ開発者として必要になる可能性のあるほぼすべてを網羅しています。

Google は、多くのアプリケーションで使用されるブロードキャスト インテントをリストしていないようです。 これは

ACTION_SHUTDOWN 放送の意図。 このインテントはデバイスのシャットダウン時に送信されます。これは、プロセスが強制終了される前にアプリの動作をすぐに終了できるようにするため、アプリ開発者にとって非常に重要です。 このブロードキャスト インテントがホワイトリストに登録されたインテントのリストに表示されていないにもかかわらず、アプリケーションは できる 実際、今でもマニフェストに登録されたブロードキャスト受信機を介してそれを聞いています。 コミットによると Android Git では、Google がそれをリストに含めるのを忘れただけです。

Googleはデバイスのシャットダウンを検出する機能をアプリケーションから削除しているため、実際にホワイトリストに登録されているのは素晴らしいことです 一部のアプリケーションはデバイスがシャットダウンする前に作業内容を迅速に保存できなくなるため、ユーザーとアプリ開発者の両方にとって悪影響を及ぼします。 このブロードキャスト インテントが Google の開発者向けページに記載されていない理由は完全にはわかりませんが、ベテランの Android 開発者と話をしました。 コモンズウェア そして彼は、それが Google 側の単純な文書作成上の誤りである可能性が高いことに同意します。 同氏によれば、このようなことが起こったのは初めてではないという。