2011-11-26 23 views
59

私のサービスが開始されるべきではないときに、サービスを開始しようとすることができるいくつかの条件があります。このような場合には、の方法の中でstopSelf()と呼ぶのは悪いフォームですか?もしそうなら、そのような状況を処理する最善の方法は何ですか?どんな資源も大変高く評価されます。Service.onStartCommandでstopSelf()を呼び出すことはできますか?

答えて

73

onStartCommand()メソッド内でstopSelf()を呼び出すのは悪いフォームですか?

私の頭の上から離れて、私はなぜそれが問題になるのか考えることができません。

stopSelf()は、Androidのもののように、すぐには効果がありません。メインアプリケーションスレッドによって処理されたメッセージキューにメッセージを格納します。サービスを停止する実際の作業は、onStartCommand()が返された後のいつかまで開始されません。

+2

私はServiceクラスの内部動作を完全には理解していないと考えていました。開始する前に停止する関数を呼び出すと、開始イベントもいくつか開始されました。それがどのように設計されたかについて。 –

+8

@SpencerRuport: 'stopSelf()'は、Androidの多くのもののように、即座の効果はありません。メインアプリケーションスレッドによって処理されたメッセージキューにメッセージを格納します。サービスを停止する実際の作業は、 'onStartCommand()'が返ってからいつか始まることさえありません。 – CommonsWare

+3

フォローアップの質問として、ちょうど 'stopSelf()'と呼ばれる適切な戻り値は何でしょうか? –

関連する問題