2012-03-13 1 views
2

私はサービスを開始するアクティビティを持っています。アクティビティが閉じられると、サービスはバックグラウンドで実行され続けます。私はここにいくつか質問があります。アンドロイドアクティビティからサービスにバインド

アクティビティ画面を閉じると、実際にアクティビティが停止しますか?それとも強制停止させて停止させる必要がありますか?

画面を閉じると停止する場合は、startServiceを使用して起動する必要があると想定します。あれは正しいですか?そのような場合は、次回のアクティビティの開始時に実行中のサービスへのハンドルを取得する方法がありますか?そうでない場合は、サービスにバインドすることができます。

答えて

3

Activityが画面に表示されなくなった場合は停止します。 ServiceにバインドされたActivityを停止しても、Serviceは停止しません。しかし、あなたのActivityonDestroy()を呼び出すときにServiceからアンバインドして、ぶら下がっているハンドラなどがないことを確認したい場合があります。

Serviceは、最初と同じ方法で実行中に再バインドできます。既に実行中のServiceを起動するためにIntentを送信しても、その2番目のインスタンスは作成されないため、安全です。

Serviceは、bindService()に電話してContext.BIND_AUTO_CREATE引数を使用して開始するのがよい方法です。

このすべての詳細は、Android docs about bound servicesにあります。最初はちょっと混乱するかもしれません。チュートリアルのコードは、問題のマップが提供するサンプルにうまく写っているように聞こえます。

+0

うん、あなたは完全にそれに答えたと思います。ありがとう。私はそれらのドキュメントを読んでいますが、これは良い説明です。迅速なフォローアップとして(おそらく別の質問を開く必要があります)。サービスにバインドした後、起動する必要はありません(onCreateメソッドは自動的に呼び出されます)。あれは正しいですか? –

+0

それは正しいです。 'Context.BIND_AUTO_CREATE'引数は、まだ開始されていない場合に開始されることを保証します。実際には、開始されていないサービスにバインドすることはできないため、バインディングが発生する前にサービスが開始されます。 – Argyle

関連する問題