Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Android 8.0のPush受信時のサービス起動について
hideoohashi
November 15, 2018
Programming
2
1k
Android 8.0のPush受信時のサービス起動について
hideoohashi
November 15, 2018
Tweet
Share
More Decks by hideoohashi
See All by hideoohashi
SmartNews 5.0 ちょっと苦労した話 / shibuya.apk #19
hideoohashi
5
3.5k
Other Decks in Programming
See All in Programming
プロダクトの成長とSREと
takuyatezuka
0
120
Google IO 2022 社内LT会 / What's new in Android development tools
shingo_kobayashi
0
400
Git操作編
smt7174
2
240
夕食断食にTRY!/for-lt-12th
pachikuriii
0
230
ちょっとつよい足トラ
logilabo
0
380
Cloudflare WorkersでGoのHTTPサーバーを動かすライブラリを作った話
syumai
0
150
테라폼으로 ECR 관리하기 (How to Manage ECR with Terraform)
posquit0
0
520
How GitHub Supports Vim License Detection, The Five Years Journey
othree
1
350
アジャイルで不確実性に向き合うための開発タスクの切り方
tanden
4
1.1k
atama plusの開発チームはどのように「不確実性」に向き合ってきたか〜2022夏版〜
atamaplus
3
610
More Than Micro Frontends: 3 Further Use Cases for Module Federation @DWX 2022
manfredsteyer
PRO
0
360
パラメタライズドテスト
ledsun
0
220
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
48
2.6k
Designing for humans not robots
tammielis
241
24k
GraphQLとの向き合い方2022年版
quramy
16
8.4k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
7
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
498
130k
How GitHub (no longer) Works
holman
297
140k
Fashionably flexible responsive web design (full day workshop)
malarkey
396
62k
Teambox: Starting and Learning
jrom
123
7.7k
Ruby is Unlike a Banana
tanoku
91
9.3k
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
Transcript
Android 8.0のPush受信時の サービス起動について 2018/11/15 - potatotips #56 Hideo Ohashi 1
About Me • Androidエンジニア8年間やってます • 現在はスマートニュース株式会社でAndroidアプ リ開発全般に関わっています 2
Today’s topic • Android 8.0対応時に発生した、Push受信時の バックグラウンドサービス起動の問題と、そこか ら学んだことの共有させていただきたいと思いま す 3
バックグラウンドサービスの制限 • Android 8.0からバックグラウンドサービスの実 行に制限がつきました ◦ https://developer.android.com/about/versions/oreo/background • ただし特定の状況のときは実行制限はなくなり、 優先度高のPush受信もそのうちのひとつです
4
状況 • SmartNewsではPushを受けた後に処理を Serviceに委譲し、別途画像を取得して Notificationを出していました • Android8.0でもそのままで動作するはずが、 startService()の呼び出しで IllegalStateExceptionが発生していました 5
なぜだろうか? 6
原因(たぶん) • 試しに優先度高のPushを受けてから60秒ほど 経った後にstartService()を呼び出したら IllegalStateExceptionが発生しました • onReceive()では基本的にstartService()を呼び 出しているだけなので、Pushを受けてからアプリ のonReceive()が呼ばれるまでの、アプリ側から 手が出せないところで時間がかかってしまってい
る可能性が高い 7
どう解決したか • Serviceを使っていた理由は主に画像ダウン ロードだったので、startService()に失敗した場 合は画像なしでNotificationを出すことで解決さ せました ◦ 多少の情報は落ちてもリアルタイムに表示することを優 先させました 8
まとめ • 何かPushを受けてバックグラウンドサービスを 動かしたいとき、優先度高のPushでも startService()が失敗する場合があることを考え て設計・実装したほうがよさそう 9
ご静聴ありがとうございました 10