2017-08-05 20 views
3

私はthe docsを読んで、Context.startForegroundService()は、開始されたサービスがstartForeground()を呼び出すという暗黙の約束を持っています。しかし、Android Oにはバックグラウンドサービスとフォアグラウンドサービスの変更が出ているため、以前のstartService()メソッドを使用した場合と比較して、他のパフォーマンスの改善点はありますか?フォアグラウンドサービスにContext.startService(Intent)の代わりにContext.startForegroundService(Intent)を使用することに利点はありますか?

答えて

3

これは、パフォーマンスの向上も、メリットもベストプラクティスもありません。

API 26以降、バックグラウンドアプリでバックグラウンドサービスを作成することはできません。だから、

、あなたのアプリがバックグラウンドで動作している場合(それは同様フォアグラウンドでいた場合、あなたが同じことを行うには歓迎している)、あなたではなく、元startService(Intent)Context.startForegroundService(Intent)を使用するに持っています。サービスは、起動後最初の5秒以内にstartForeground(int, Notification)にコールする必要があります。そうでないと、システムはサービスを停止します。

また、バックグラウンドのアプリからstartService(Intent)でサービスを開始すると古い方法はまだAndroidのオレオの現在のリリースで動作しますが、それはすぐに修正されるという情報があることに言及しなければなりません。

したがって、前景サービスを開始するときはいつでも、API26から、startService(Intent)の代わりに新しいContext.startForegroundService(Intent)メソッドを使用します。

+0

「bacjgroundアプリからstartService(Intent)でサービスを開始すると古いことがあるという情報があります」ソースがありますか? –

関連する問題