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

[Android] WorkManagerライブラリのアップデート #144

Closed
keiji opened this issue May 2, 2021 · 6 comments · Fixed by #181
Closed

[Android] WorkManagerライブラリのアップデート #144

keiji opened this issue May 2, 2021 · 6 comments · Fixed by #181
Assignees
Labels
enhancement 新しい機能や改善のリクエスト

Comments

@keiji
Copy link
Collaborator

keiji commented May 2, 2021

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

#123 の検討過程で提案をもらったもの。

WorkManagerは、Androidでバックグラウンドタスクの実行を管理するライブラリ(バックエンドはJobScheduler)。

#123 (comment)

一方、COCOA では (Xamarin 経由ですが)2.3 が指定されているように見えます。

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

こちらを最新の 2.5.0.1 に入れ替えるだけでも幾つかの端末での動作は改善するのでは無いでしょうか。(すべての端末で問題無くなるとは思っていません)
https://www.nuget.org/packages/Xamarin.AndroidX.Work.Runtime/2.5.0.1

その他 / Additional context

個人的な理想を言えば、その他のライブラリも含めて、アップデートしたらすぐに追従するPRをして、開発チームに取り込んでもらうくらいのスピード感でいきたい(実際の取り込み段階では、stableかbetaかで判断は分かれそう)

@keiji keiji added enhancement 新しい機能や改善のリクエスト good first issue 初心者や、このリポジトリに対する深い経験が無い方向けのIssue welcome-contribution Pull Request の送信を強く望むもの labels May 2, 2021
@tatsu-jp
Copy link
Contributor

@keiji さん、
(アプリの中身を少し理解できたので)、good first issue/welcome-contributionラベルのある本issueに対応できるかを検討しています。
対応する上で質問させてください。

修正自体は以下を変更すれば良いだけだと思いますが、どのようなテストをしてPRすれば良いのか分からず困っています。

<PackageReference Include="Xamarin.AndroidX.Work.Runtime" Version="2.3.4.1" />

  • Androidビルド確認:EN APIをサポートしているversion 5.0 (API level 21)以降でReleaseビルド確認しようと思っています。全APIレベルでビルド確認した方が良いのでしょうか。認識が合っているのかを確認させてください。
  • 動作確認:バックグラウンドタスク実行の挙動が改善されたかを確認できる方法を思いついていないので、方法あればコメント頂けると助かります。

すみませんが、実機テストで使える端末が今手元にないのでシミュレータ(Debug_Mock)での確認になります。

@keiji
Copy link
Collaborator Author

keiji commented May 15, 2021

ありがとうございます!

ビルドはお使いの環境でのみ確認していただければ大丈夫です。ReleaseビルドについてもPull RequestをいただいたらGitHub Actionsが自動で各Configuration、プラットフォーム別のビルドとユニットテストまで実行して、問題があればここでわかります。

GitHub Actionsの実行例

動作確認については、基本的には「アップデート後もこれまで通り動いて、これまであった不具合が改善されている」というようなもので、確認が難しいというのは承知しているので、最終的には開発チーム側で行うリリース前テストで検出することを想定しています。

よろしくお願いいたします。

@tatsu-jp
Copy link
Contributor

コメントありがとうございます。
すみません、ci.ymlノーチェックでした。素晴らしいテストがあるので安心してPRできます。

土日で対応して後でPR出します。
よろしくお願いします。

@tatsu-jp
Copy link
Contributor

@keiji さん、
ライブラリアップデートの影響を確認するためにWorkmanager近辺のコードを見ていて、一点気になった点があるのですみませんが教えてください。

#27 で対応されたSetRequiresDeviceIdle(true)を外す修正に関する質問です。
以下には残っているのですが問題ないのでしょうか(意図的に残している?)。

static Action<PeriodicWorkRequest.Builder> bgRequestBuilder = b =>
b.SetConstraints(new Constraints.Builder()
.SetRequiresBatteryNotLow(true)
.SetRequiresDeviceIdle(true)
.SetRequiredNetworkType(NetworkType.Connected)
.Build());

参考:Android デベロッパー>ドキュメント>ガイド>WorkRequest の定義>定期的な処理のスケジュール設定

@keiji
Copy link
Collaborator Author

keiji commented May 15, 2021

はい。大丈夫です。ご指摘の箇所はXamarin.ExposureNotificationライブラリのデフォルト設定になります。
設定はMainActivitiyで上書きされるので、実際にWorkerが登録される際はSetRequiresDeviceIdle(false)が適用されます。

// Override WorkRequest configuration
// Must be run before being scheduled with `ExposureNotification.Init()` in `App.OnInitialized()`
var repeatInterval = TimeSpan.FromHours(6);
Action<PeriodicWorkRequest.Builder> requestBuilder = b =>
b.SetConstraints(new Constraints.Builder()
.SetRequiresBatteryNotLow(true)
.SetRequiredNetworkType(NetworkType.Connected)
.Build());
ExposureNotification.ConfigureBackgroundWorkRequest(repeatInterval, requestBuilder);

@tatsu-jp
Copy link
Contributor

ありがとうございます。理解が深まりました。
PRを発行したのでご確認お願いします。

@keiji keiji removed good first issue 初心者や、このリポジトリに対する深い経験が無い方向けのIssue welcome-contribution Pull Request の送信を強く望むもの labels May 25, 2021
@keiji keiji closed this as completed in #181 Jun 9, 2021
This was referenced Jul 15, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement 新しい機能や改善のリクエスト
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants