Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
17
Help us understand the problem. What is going on with this article?
@naoi

OreoからServiceの扱いが変わって、既存のアプリがピンチに・・・

More than 3 years have passed since last update.

検証環境

この記事の内容は、以下の環境で検証した。

  • Java:open jdk 1.8.0_152
  • Kotlin 1.2.10
  • Android Studio 3.0.2
  • CompileSdkVersion:26

はじめに

Android 8.0であるOreoからバックグラウンド処理に対してかなり厳しいルールが適用されます。
今まで、バックグラウンドで実行していたServiceが既存の実装では止められてしまいます。
この記事ではそんなServiceを救済するための方法を載せます。
何とかして、Serviceを救っていきましょう!

OreoでのServiceの扱いについて

Oreoでは下記のページに書いているように、Serviceを大別します。

バックグラウンド実行制限 | Android Developers

サービスは以下のように区別されます。

Foreground Service(フォアグラウンドサービス) Background Service(バックグラウンドサービス)
・サービスを起動したアプリのActivityが可視状態にある
・Foreground Serviceを使用している。
・別のアプリが自身のサービスにバインドしている。
・IME、壁紙サービス、通知リスナー、音声またはテキスト サービスにバインドしている。
・バックグラウンドサービスではなくJobSchedulerを使用している。
左記以外すべて

backgroundサービスと判断されると、
アプリがバックグラウンドになってから数分後にはServiceに対し、
stopSelfメソッドを呼び出した時と同じように、Serviceが終了してしまいます。

Serviceを救おう!

既存アプリのServiceを救うには下記の方法があります。

  • アプリを永遠に起動したままにしてもらおう!(現実的ではない)
  • 他のアプリにバインドしてもらおう!(これも現実的ではない)
  • Foreground Serviceにしよう!(現実的だ!)
  • JobSchedulerに置き換えよう!(現実的だ!)

結果的に2つの方法がありそうです。
では、『Foreground Service』と『JobScheduler』の実装方法が理解できれば対応できそうですね。

Foreground Serviceの実装方法

Foreground Serviceの実装方法は下記の記事を参照してください。
Foreground Serviceの基本 - Qiita

JobSchedulerの実装方法

下記の記事を参照してください。
Jobschedulerの基本 - Qiita

JobSchedulerはLolipop(API Level 21)からしか対応していない件

必要に応じてKitkatでも同じことができる下記の2つから選択する必要があります。

まとめ

いずれやってくるOreoに備えて、十分な準備をしておかなければなりません。
この記事では説明しきれていないOreoからの変更もあります。
下記のページで変更内容を確認できますので、是非一度は確認してみてください。

Android 8.0 | Android Developers

17
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
naoi
casareal
システム開発/評価・検証支援/品質改善支援サービスと現場に即した実践的なIT研修サービスを提供しています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
17
Help us understand the problem. What is going on with this article?