システムがSTART_STICKY
などのフラグを介してサービスを再起動する以外に、onStartCommand(Intent, int, int)
に渡されるIntentがNULLになる他の理由はありますか?
また、システムによってサービスが再起動されると、Intent.getAction()
メソッドはNULL ...を返すことがあります。意図は単にgetAction()
だけではありません
here も尋ねましたが、まだ回答を受け取っていません。
[〜#〜] update [〜#〜]:マークマーフィーとチャットした後、彼はonStartCommand()
コールバックでSTART_REDELIVER_INTENT
を返すことを提案しましたSTART_STICKY
の代わりに私のサービスで、再起動後にインテント全体が送信されるようにします。
サービスが何かを実行しようとしていた場合、その何かの最中にサービスが再起動されることを心配していたため、最初はこれをしませんでした...私はそれが私が責任を負う必要があるロジックだと思います:)
入ってくる旗についての議論がないことに驚いています。ログでこれを次のように監視します。
if (null == intent || null == intent.getAction ()) {
String source = null == intent ? "intent" : "action";
Log.e (TAG, source + " was null, flags=" + flags + " bits=" + Integer.toBinaryString (flags));
return START_STICKY;
}
更新:フラグは0であったため、アクション可能なものはありませんでした。機能を失うことなく、nullチェックを残しました。
編集:OK、すべての場所のSTART_STICKYのドキュメントで見つけました! 「サービスに配信される保留中の開始コマンドがない場合は、nullインテントオブジェクトで呼び出されるため、これを確認するよう注意する必要があります。」
http://developer.Android.com/reference/Android/app/Service.html