0

私のAndroidアプリケーションはフォアグラウンドサービスであり、ユーザーがアプリケーション全体をアンインストールせずに、いつでもサービスを無効にできるオプションが欲しいです。

マニフェストでenabled=trueラベルを使用し、起動が完了してフォアグラウンドでサービスを開始します。私の懸念は、サービスの開始(stopSelf)を防ぐためにuserEnabled = falseの非常に基本的なグローバルブール値(サービスのonCreate内)がある場合、Androidは引き続きサービスの開始を試み、ループが発生し、したがって、不要なリソースを使用しますか?

誰かが私と知識を共有して、私がこれについて心配する必要がないこと、またはこれを行うための正しい手順/方法を私に知らせてもらえますか?方向性を示すドキュメントや投稿が見つかりません。

よろしくお願いします。

回答:以下のCommonsWareの回答を参照してください。これも、CommonsWareによるいくつかの便利なコードへのリンクです。

さらに読んだ後、マニフェストでサービスセットをtrueに設定することによって発生する可能性のあるループはありません。

4

1 に答える 1

1

私の懸念は、サービスの開始(stopSelf)を防ぐためにuserEnabled = falseの非常に基本的なグローバルブール値(サービスのonCreate内)がある場合、Androidは引き続きサービスの開始を試み、ループが発生し、したがって、不要なリソースを使用しますか?

その文は私にとって完全には解析されませんでした-あなたが心配しているループを私は見ることができません。

とはいえ、起動時にサービスを起動するかどうかをユーザーが制御できるようにする場合は、ユーザーがサービスを無効にするときにを使用PackageManagerして無効にします。そうすれば、再起動時に制御が得られないため、サービスが開始されません。ユーザーがサービスを再度有効にした場合は、を再度使用してを再度有効にします。setComponentEnabledSetting()BOOT_COMPLETED BroadcastReceiversetComponentEnabledSetting()BOOT_COMPLETED BroadcastReceiver

于 2012-08-19T23:08:22.377 に答える