2011-09-13 16 views
4

私は、Android用のオーバーBluetoothビデオストリーミングサービスを導入しようとしています。優先度の高いAndroidサービス

どのように私はそれを保証することができます

  • をサービスは、高い優先順位で実行されますか?レイテンシを最小限に抑えたい。
  • メモリが逼迫しているときに殺されるべきもののリストのサービスは低いですか?

答えて

8

あなたはあなたのサービスが稼働し続けることを確認するために必要な二つの重要な事柄があります。

  1. はあなたがstartService()代わりに(またはそれに加えて)を呼び出していることを確認してください結合。これにより、サービスを作成したアクティビティが強制終了された場合でも、サービスが継続して実行されます。

  2. サービスをフォアグラウンドで実行すると、メモリが必要なときにAndroidがそれを再利用しないようにすることができます(startForegroud())。サービスが実際に開始されたときに公開されるNotificationも作成し、通知領域にアイコンを表示し、サービスがまだ実行中であることをユーザーに知らせる必要があります。詳細については

:あなたがしている場合

http://developer.android.com/reference/android/app/Service.html http://developer.android.com/guide/topics/fundamentals/bound-services.html

0

は/私は、bindService()を使用することを余儀なくされているのと同じような状況にあった、溶液は

を設定することでした

Context.BIND_IMPORTANT

フラグがその呼び出しにあります。それは、フォアグラウンドアプリであれば最高の可能性があるバインディングアプリのサービス優先順位を上げます。このフラグを使用しない場合、サービスは他のすべてのバックグラウンドサービスとわずか10%のリソースで対戦する必要があります。 (他の90%はフォアグラウンドアプリ用に予約されています)。

bindService()の実行中にこのフラグを設定せずにサービスのスレッド優先度を手動で設定しても差はありません。

関連する問題