Skip to content
This repository has been archived by the owner on Apr 12, 2023. It is now read-only.

[Android] WorkManagerをApplication#onCreateで再スケジュールする #196

Closed
keiji opened this issue May 27, 2021 · 3 comments · Fixed by #283 or #376
Closed

[Android] WorkManagerをApplication#onCreateで再スケジュールする #196

keiji opened this issue May 27, 2021 · 3 comments · Fixed by #283 or #376
Assignees
Labels
confirmed 開発内部管理用 enhancement 新しい機能や改善のリクエスト

Comments

@keiji
Copy link
Collaborator

keiji commented May 27, 2021

その機能リクエストは何らかの問題に関連しますか / Is your feature request related to a problem?

#136 (comment) より。

Android版の接触確認API(Google Play Services)は、システムが接触確認アプリを停止してバックグランド処理が実行されない場合に備えて「Force-stop Handling」を備えている。
Google Play Servicesは、Force-stop Handlingで6時間に1回の頻度でアプリのプロセスを再度起動して、WorkManagerのJobを復帰する。

ところが、一部の端末(some popular devices)では、Force-stopされたかを判定する処理でSecurityExceptionが発生するため、Force-stop Handlingが完了せず、Jobの復帰が行われない可能性がある。

androidx/androidx@9b77063#diff-7794a8af74a01c5c6d2ee10558482274048bd3aa011aaca99459c2c5049fd7dd

This helps workaround OEM introduced bugs in AlarmManager on some popular devices

some popular devicesとは 🤔

解決策についてお書きください / Describe the solution you'd like

WorkManagerにWorkerを登録する一連の処理を、現在のMainActivityからApplication#onCreateに移動する。

COCOA v1.2.3からWorkerのExistingPeriodicWorkPolicyがKEEPになっているので、アプリのプロセス起動時に再登録されても上書きされることはなく、現在の動作には影響がないと考える。

あなたが考える代替案についてご説明ください / Describe alternatives you've considered

WorkManagerにSecurityExceptionを無視するワークアラウンドが追加されている。

androidx/androidx@9b77063#diff-7794a8af74a01c5c6d2ee10558482274048bd3aa011aaca99459c2c5049fd7dd

この変更が入ったバージョンにすることで課題を解決することができると考える。

Historyを見る限り2.6.0-beta01に入りそうだが、これを書いている時点では2.6.0-beta01はリリースされていない。

https://developer.android.com/jetpack/androidx/releases/work?hl=zh-tw#version_260_2

その他 / Additional context

Force-stop Handlingがアプリのプロセスを再起動するか。実際に確認していない(WorkManagerのJobが復帰することは確認した)ので、あらかじめ実験して確認しておく。

Application IDがCOCOAと異なる場合でも、接触確認APIを利用中であればWorkManagerのJobは復帰したので、リリース版のCOCOAに限定されていない。実験は、接触確認APIを使ってWorkManagerにJobを登録するだけの最小限の機能のアプリを作るのが方がよさそう。


Internal IDs:

  • NFR 2530
@keiji keiji added the enhancement 新しい機能や改善のリクエスト label May 27, 2021
@b-wind
Copy link

b-wind commented Jun 8, 2021

Version 2.6.0-beta01
June 2, 2021
https://developer.android.com/jetpack/androidx/releases/work#2.6.0-beta01

@b-wind
Copy link

b-wind commented Jun 9, 2021

誤解を招いてしまったようですが、 2.6.0-beta01 上記記述時点では Nuget には記載が無かったです。今見るとある模様。
ただし、Xamarin.AndroidX 側は更新されていないので結局しばらくは使えないのかなと……

@cocoa-dev cocoa-dev added the confirmed 開発内部管理用 label Jun 30, 2021
@keiji keiji self-assigned this Jul 13, 2021
@keiji
Copy link
Collaborator Author

keiji commented Jul 16, 2021

Pull Requestを出しました。よく動いている。

@keiji keiji added the waiting-for-confirmation 関係者に確認中のもの label Jul 16, 2021
@cocoa-dev cocoa-dev removed the waiting-for-confirmation 関係者に確認中のもの label Jul 20, 2021
This was referenced Sep 8, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
confirmed 開発内部管理用 enhancement 新しい機能や改善のリクエスト
Projects
None yet
3 participants