ユーザーがスマートフォンの電源をいつオフにするかを知る必要があります。ユーザーの電話の電源がオフになったときに通知するブロードキャスト(または同様の)はありますか?
ACTION_SHUTDOWN
Intent 電話がシャットダウンしようとしているときにブロードキャストされます。ドキュメントは言う:
フォアグラウンドアクティビティも一時停止されるため、通常はアプリでこれを処理する必要はありません。
つまり、アクティビティのすべてのライフサイクルイベントに適切に応答する場合、シャットダウンに関連する何かを本当に実行したい場合を除いて、これを使用する必要はありません。
ACTION_SHUTDOWN
インテントはAPIレベル4で導入されました。つまり、これは、Android 1.6以降。
BroadcastReceiver
でブロードキャストをトラップします。次のようになります。
public class ShutdownReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//Insert code here
}
}
次のようなマニフェストのエントリも必要です。
<receiver Android:name=".ShutdownReceiver">
<intent-filter>
<action Android:name="Android.intent.action.ACTION_SHUTDOWN" />
</intent-filter>
</receiver>
あなたがやっていることに応じて、別のオプションは ACTION_BOOT_COMPLETED
Intent 電話の再起動時に送信されます。
ACTION_SHUTDOWN
に加えて、Android.intent.action.QUICKBOOT_POWEROFF
をインテントフィルターに追加する必要があります。ACTION_SHUTDOWN
は、一部のHTCデバイス(Evo 4gなど)で常にブロードキャストされるとは限りません。
具体的には、[再起動]を選択するとACTION_SHUTDOWN
がブロードキャストされますが、[電源オフ]を選択するとQUICKBOOT_POWEROFF
がブロードキャストされます。
Dave Webbの発言をさらに詳しく説明するのが、これを処理する適切な方法です。
Android Activity Lifecycle functions:
protected void onPause();
protected void onResume();
ほとんどのシナリオでは、これらを実装するだけで十分であり、特に「電源オフ」イベントを処理する必要はありません。
Android Webサイト と このライフサイクルの質問 への回答には、さらに多くの情報があります。