0

アクティビティがフォアグラウンドにあるときにユーザーが電話を再起動すると、電話の再起動後に、アクティビティが自動的に再びポップアップします。アクティビティに渡す余分なデータが保存されないため、これが発生したくありません。そのため、アクティビティには正しい表示がありません。

どうやら、インテントフィルターを持つ BroadcastReceiver が開始する前でも、アクティビティが開始されているようandroid.intent.action.BOOT_COMPLETEDです。

電話の起動時にアクティビティが自動的に開始されないようにするにはどうすればよいですか?

編集:アクティビティのインテントフィルターでカテゴリを使用していandroid.intent.category.HOMEます。これが、再起動時に起動する理由のようです。

4

1 に答える 1

1

ブロードキャストは、ACTION_SHUTDOWNデバイスがシャットダウンしているときに消えるはずです。「外出することになっている」と言うのは、整然としたシャットダウンを前提としているためです。ユーザーが POWER ボタンを最大 10 秒間押し続けたり、バッテリーを飛び出させたりした場合、それACTION_SHUTDOWNはブロードキャストではないと思います。

コンポーネント (アクティビティなど) が使用可能かどうかを制御するには、 と を使用できPackageManagerますsetComponentEnabledSetting()。無効化されたコンポーネントは実行できず、通常は表示されません (たとえば、無効化<receiver>されたアプリ ウィジェットはアプリ ウィジェット ピッカーに表示されません)。

理論的には、これら 2 つを組み合わせることができます。ただし、最良の場合でも、ACTION_SHUTDOWN動作にはかなり時間制限があると思います (そのため、迅速に対応してください)。「無秩序な」シャットダウン シナリオを処理する必要があります。

于 2012-08-09T16:57:44.257 に答える