Androidで非同期処理をするときのまとめ
#Android
調べるモチベーション
Androidではいろんな方法で非同期処理が可能。
AsyncTask, AsyncTaskLoader, java.lang.Thread, Service, IntentService...
どれがどういうシチュエーションでどう使うのがベストプラクティスなのかを知りたい。
Kotlin使えば、Coroutineなども含まれるかもしれない。
結局のところ
結局、どんな非同期処理なのかで、変わってくると思う。
時間はあまりかからないのか?
時間がかかるのか?
短いけど、たくさんスレッドがほしいのか?
共通して言えること
絶対落ちないアプリの作り方のp30に上がっているクラスに共通して言えることとして
「非同期処理はコントローラより寿命が長いことがままある」ということ。
まとめリスト
たくさんスレッドを作るならスレッドプールを知るべき
参考:https://qiita.com/KeithYokoma/items/4e6e9bd4e44aab63424d
AsyncTaskはアクティビティの破棄などに影響を受ける
画面回転だけでも影響を受ける
AsyncTaskは長くても数秒の非同期処理にのみ使うことを推奨している
元:P39: https://www.slideshare.net/fumihikoshiroyama/ss-47472394
UIスレッド(メインスレッド)以外でUIを操作するときは、以下が使える
Hander
Activityと完全に切り離すならIntentService
参考:https://qiita.com/KeithYokoma/items/4e6e9bd4e44aab63424d