Android battery and memory optimizations - Google I/O 2016(18:46 aprox)には、今後アンバウンドバックグラウンドサービスが機能しないことが説明されています。無制限のバックグラウンドサービスを廃止するための新しいアンドロイドのガイドラインとアクティビティとの間でサービスを共有しましょう
私はその変化の精神を理解してユーザーの電池を保護し、電話機の応答性とパフォーマンスを向上させます。
しかし、私は、精神的には有界のサービスであるが、無制限のもので実装するというユースケースが1つあります。
ユースケースは、「複数のアクティビティにバインドされている」サービスであり、アクティビティがフォアグラウンドではなく、アクティビティの遷移の間に保持される必要がある場合は破棄できます。 (たとえば、すべてのアクティビティで同じ共有状態とリソースを維持するサービスで、再作成するのはうれしいことです)。
私が実装する方法は、各アクティビティでバインドされていないサービスを開始し、バインドしてバインドされていればそれをサービストラックにします。
無制限のサービスを使用せずにそのユースケースの実装を改善する方法を知っていますか? 無制限のサービスを使用せずにその使用パターンを許可するために、サービスへの追加が将来追加されるかどうかを知っていますか?
'bindService'(以前の' startService'を持たない)と 'ContentProvider'カスタムの状態とリソースを保持できませんか? – pskink
ありがとう@pskink、それは別の方法です。しかし、私は本当にここでContentProvidersを混在させたくありません。私はアプリケーションのサービス作成の間に一時的にサービス状態を保存することを好みます。 私がCPについて気に入らないのは、私がそれを必要としない/望まないなら、それを実装しなければならないということです。また、私の理解にライフサイクルはプロセスの生き方です。 – lujop
''アプリケーションのサービス作成の間に一時的にサービス状態を保存することを好みます。 ''あなたはカスタムの' android.app.Application'クラスを意味しますか?それはあなたのカスタムContentProviderと同じライフサイクルを持ちます:プロセスが終了した後に破棄されます – pskink