2011-10-27 4 views
1

アプリケーションは、バインドされたサービスを使用します。したがって、サービスはstartServiceを使用してどこでも開始されません。サービスにアクセスする必要のあるすべてのアクティビティは、bindServiceを使用してサービスにバインドされます。Android:フォアグラウンドで実行されている場合、システムはアンバウンドサービスを停止しますか?

サービスは(startForegroundを使用して)フォアグラウンドになる場合があります。

特にサービスにバインドされていないもの(サービスによってはサービスが停止することを意味します)がフォアグラウンドで実行されている(つまり停止していないことを意味します)場合があります。どのルールが優先されますか?フォアグラウンドで実行中のアンバウンドサービスは停止されますか?

ありがとうございました。

答えて

1

場合によっては、サービスは(startForegroundを使用して)フォアグラウンドになります。

これは、サービスを使用しているアクティビティがフォアグラウンドになっているため、プロセスがすでにフォアグラウンドになっているため、特に有用ではありません。

どのルールが優先されていますか?

サービスは、最後のクライアントがそれからアンバインドした後に破棄されます。 startForeground()はこれに影響しません。

+0

私はあなたを理解しているとは思わない。サービスは実際にはフォアグラウンドにあるアクティビティによってトリガされたアクションによってフォアグラウンドになります。しかし、サービスは、ユーザーが明示的に停止するまで、アクティビティがバックグラウンドになると実行され続けます。だから、私はサービスがシステムによって殺されないようにする必要があります。私のためにこの仕事をしているドキュメントstartForegroundに従って。 – Alex

+0

@Alex:ドキュメントの引用:「開始したサービスはstartForeground(int、Notification)APIを使用できます。あなたはサービスを開始していません - サービスにバインドしています。ドキュメンテーションを引用する:「メモリが足りないときに殺す候補者はいない」あなたのサービスはメモリ不足のために遠ざかっていません。バインドされたすべてのクライアントがバインド解除され、 'startService()'を呼び出すことができなかったため、サービスは破棄されています。 – CommonsWare

関連する問題