1

PhoneStateListener を介して信号強度を監視するアプリを作成しました。このアプリを起動時に起動し、永久に実行したい.

私がこれを管理した方法は次のとおりですが、誰かがこれを行うためのより良い方法を推奨できるかどうか知りたいです.

BOOT_COMPLETED で実行される BroadcastReceiver を登録しました。

この BOOT_COMPLETED BroadcastReceiver 内で、Service を開始します。

Service が PhoneStateListener を起動します。

BOOT_COMPLETED BroadcastReceiver 内で、AlarmManager.setInexactRepeating を介して定期的なアラームも開始します。

このアラームが発生するたびに、サービスが実行されているかどうかがチェックされます。実行されていない場合は、Service が再起動され、それによって PhoneStateListener が再起動されます。

これはすべて私にとってはうまくいっているようですが、PhoneStateListener が常に (または少なくともほとんどの場合) 実行されていることを確認するための最良かつ最も効率的な方法であるかどうか疑問に思っています。

これを管理するためのより良い方法はありますか?

前もって感謝します。

4

1 に答える 1

1

サービスをフォアグラウンド サービスにすることができます。この場合、サービスが強制終了される可能性はほとんどありません (現在開いているアプリがより多くのメモリを必要とする場合のみ)。

この場合、サービスがフォアグラウンドにある間、アプリは進行中の通知をユーザーに表示する必要があります。

これを行うにstartForeground()は、サービスのメソッドを呼び出して、通知を提供する必要があります。

startForeground(ONGOING_NOTIFICATION_ID, notification);

詳細を確認してください: http://developer.android.com/guide/components/services.html#Foreground

于 2015-10-10T13:00:24.163 に答える