2

前回設定値が設定されてから Android デバイスが再起動したかどうかを検出しようとしています。android.permission.RECEIVE_BOOT_COMPLETED理想的には、無許可で行いたいと思います。

私が考えている方法の 1 つは、ある種のセッション ID を含む別の設定値を保存することです。問題のプリファレンス値を更新すると、セッション値も更新されます。セッション値の設定で値を確認すると、それが現在のセッション値と等しい場合、再起動は行われていません。現在のセッションの値が保存されている値と異なる場合は、再起動が行われています。残念ながら、セッション値を見つけようとしてかなり長い間ドキュメントを掘り下げてきましたが、何も見つかりません。

2つのうちの1つについて助けてほしい。セッション ID やブート ID に似た値を見つけることができる場所を提供できる場合は、私のアルゴリズムを使用します。または、問題を解決するために別のアルゴリズムを受け入れることもできます。どうもありがとう!

4

2 に答える 2

1

はい、Application クラスと Non-Static ブロードキャスト Receiver ACTION_SHUTDOWN を使用してそれを行うことができます。Application クラスは 2 つのケースで開始されました

  1. Android デバイスの起動
  2. 「強制終了」した後にアプリケーションが起動します。

ACTION_SHUTDOWN を受信したら、アプリケーションの Shared-preferences またはデータベースを使用してブール値を保存します shutdown = true アプリケーション クラスの開始時にこのブール値を確認します。true の場合、デバイスは起動しています。それ以外の場合、ユーザーはアプリを強制的に停止させました。

詳細については、私が書いた次の投稿を読んで、追加したコード例を試してください。

  1. アプリケーション クラス
  2. Boot Broadcast Receiver (両方が起動することと違いを示すため)
  3. アプリケーション コールに登録されているブロードキャスト レシーバをシャットダウンします。
于 2015-04-12T19:59:41.880 に答える