1. ホーム
  2. android

[解決済み] onStartCommandで渡されたIntentがNULLになる理由

2022-10-29 01:02:09

疑問点

に渡されるIntentは、他の理由もあるのでしょうか? onStartCommand(Intent, int, int) に渡される Intent が NULL になる理由は他にありますか? START_STICKY ?

また、システムによってサービスが再起動されたときに Intent.getAction() メソッドが NULL を返す...ことがあります。インテントが NULL ではなく、単に getAction()

私が尋ねたのは ここで にも問い合わせましたが、まだ回答がありません。

アップデイト : Mark Murphyとチャットした後、彼は私が戻ることを提案しました。 START_REDELIVER_INTENT の中に onStartCommand() の代わりに、私のサービスでは 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だったので、そこには何もアクションがありませんでした。私は、機能を損なうことなく、そこにヌル チェックを残しました。

編集: OK、よりによって START_STICKY のドキュメントでそれを見つけました! "サービスに配信される保留中の開始コマンドがない場合、それは null インテント オブジェクトで呼び出されるので、これをチェックするように注意する必要があります."。

http://developer.android.com/reference/android/app/Service.html