potatotips #52 (iOS/Android開発Tips共有会) - connpass https://potatotips.connpass.com/event/88164/
めっちゃでっかいログには気をつけようという話です。
- 新機能の開発を行った
- 大量データの可能性(1000件あるらしい)
- 確実に送りたい
技術選定: 大量のデータを安心してバックグラウンドで処理する
WorkManager Google I/O 2018で発表された。バックグランドジョブを扱うのにとても柔軟に使える。
Workder() を継承したものを使う。
実行条件に電源接続されている、Wi-Fi接続されている、などの制限を加えられる。
適切なサイズにデータを加工すればいい、1万件500ずつで20ぐらいWorker作ればいいんじゃないかということでやってみた。
WorkManagerに感謝しながら金曜日に帰宅、月曜日、全部死んでた。
WorkManagerは何も悪くないが、RequestBodyが巨大でログが爆発した。
setLevel(Level.BODY) OkHttpLoggingInterceptorのログレベルをBody(つまり全部)出力しようとしていた。 logging=interceportをforkして出力ログサイズを制限できるパッチを当てたものを使用して回避。
Picassoにパッチを当てた話がとても参考になった。
Picasso にパッチを当てた話 - inFablic | Fablic, inc. Developer's Blog.