デバイスに電源が接続されてからN秒後にUI以外のアクションを開始しなければならない場合があります。このアクションは、ユーザーがUIを介して開始することもできます。
ACTION_POWER_CONNECTEDをリッスンするBroadcastReceiverがAndroidManifest.xmlで定義されています。
onStartCommandで必要なアクションを実行するサービスがあります。私の質問は、アクションがブロードキャストによってトリガーされた場合にそのサービスを開始する正しい方法は何ですか?
私は2つのオプションを念頭に置いています:
ワンショットタイマータスク。ただし、ドキュメントによると、BroadcastReceiverから非同期タスクを開始できなかったため、間違っている可能性があると思います。
再設計サービス:
- アクションがユーザーによってトリガーされた場合は、 onStartCommandでアクションを開始します
- タイマータスクを開始し、タイマーショットでアクションを実行します(1と同じロジックですが、サービス内)。アクションがブロードキャストによってトリガーされた場合。
私は2に傾いています。コードが少し複雑になりますが、それは正しい方法にすぎないようです。
-レブ