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
1.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.7k
Other Decks in Programming
See All in Programming
Use KMM to call the API of the National Tax Agency
akkeylab
0
290
Ruby Pattern Matching
bkuhlmann
0
610
スタック・オーバーフローに コントリビュートしはじめて良かったこと🐣
takuyakikuchi
1
130
Makuakeの認証基盤とRe-Architectureチーム
bmf_san
0
310
新卒でサービス立ち上げから Hasuraを使って3年経った振り返り
yutorin
0
210
Step Functions Distributed Map を使ってみた
codemountains
0
100
はてなリモートインターンシップ2022 フロントエンドブートキャンプ 講義資料
hatena
0
110
AWS App Runnerがそろそろ本番環境でも使い物になりそう
n1215
PRO
0
890
AWSにおける標的型Bot対策
hacomono
0
400
監視せなあかんし、五大紙だけにオオカミってな🐺🐺🐺🐺🐺
sadnessojisan
2
1.3k
Above All, Make It Fun! #fjordbootcamp / make it fun
kakutani
6
550
tidy_rpart
bk_18
0
570
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
263
38k
Scaling GitHub
holman
453
140k
Making the Leap to Tech Lead
cromwellryan
116
7.7k
jQuery: Nuts, Bolts and Bling
dougneiner
57
6.6k
Rebuilding a faster, lazier Slack
samanthasiow
69
7.5k
Gamification - CAS2011
davidbonilla
75
4.1k
Put a Button on it: Removing Barriers to Going Fast.
kastner
56
2.5k
Art, The Web, and Tiny UX
lynnandtonic
284
18k
4 Signs Your Business is Dying
shpigford
171
20k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
214
12k
No one is an island. Learnings from fostering a developers community.
thoeni
12
1.5k
Fontdeck: Realign not Redesign
paulrobertlloyd
74
4.3k
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