2017-04-23 4 views
0

私のサービスを聞いていません。私がコードをonCreateまたはonResumeに置くと、それは起動しません。ただし、たとえば入力した場合はトリガーします。 ListenerButton、またはアクティビティのonStopコールバックに関連付けられています。何故ですか?サービスは、特定の放送を

+0

'onCreate()'、 'onStart()'、 'onResume()'が呼び出されるまでにあなたのサービスはまだ実行されていません。 – CommonsWare

+0

と私はそれが実行されていることを確認することができますか?私はサービスを開始するコードで自分の答えを編集しました –

+0

もっと簡単な解決法は、すぐに放送を送信しようとしないことです。あなたはそれをする必要はありません。すぐに何かをするサービスが必要な場合は、 'onStartCommand()'でそれを行うようにしてください。それを受けた – CommonsWare

答えて

1

すぐにブロードキャストを送信するのではなく、onCreate()またはonStartCommand()メソッドでサービスを設定してください。

あなたのサービスがあなたのUIとは別のプロセスにない限り、このためにシステムブロードキャストを使用することはかなり悪い考えです。それでも、あなたはセキュリティを考える必要があります。どのアプリもあなたのサービスに何をすべきかを伝えるには、ブロードキャストを送信する必要があります。

サービスとUIが同じプロセスにある場合は、改善されたセキュリティだけでなく、パフォーマンス向上のためにインプロセスイベントバス(例:LocalBroadcastManager、greenrobotのEventBus)を使用してください。