これは何度も尋ねられた質問です。しかし、答えが見つからなかったことがあります。ですから誰かが私に光を当てることができれば幸いです。Android AsyncTask vsスレッド+ハンドラvs rxjava
AsyncTaskとThreadは、ANRの問題を回避するためにバックグラウンドタスクを実行するためのオプションです。 asynctaskは短時間実行タスクにのみ使用し、スレッドは長期実行タスクに使用することをお勧めします。 asynctaskを長いタスクに使用してはならない理由は、asynctaskによって引き起こされる可能性のあるリークについてよく知られています。これは、アクティビティが破棄された後に実行を継続する可能性があるためです。それは説得力があります。ただし、その他の質問もあります。
- スレッドはアクティビティライフサイクルからも独立していませんか?したがって、asynctaskのリスクはスレッドにも適用できます。なぜ、スレッドは長時間実行されるタスクに適していますか?
- asynctaskのリスクは、アクティビティで使用する場合にのみ適用されます。 IntentServiceが作業完了後に停止してからIntentServiceを使用しないでサービスを使用する場合、サービスが停止したときにasyntaskをキャンセルすることが保証されている限り、長期実行タスクに使用できますか?それはサービスでasynctaskを使用するのが自由に危険なことを意味しないのですか?
- 私はしばらくの間、rxjavaで遊んだことがあり、本当に好きです。それはスレッドを心配する必要性を排除します(サブスクライブするスレッドを決定し、放出されたデータを観察する必要はありません)。 rxjava(改造のような他のライブラリと組み合わせて)は、asynctaskとthreadの完全な置き換えに思えます。 rxjavaがasynctaskとスレッドが私が気づくべきことを達成できるものを達成できないという特定のケースがあるかどうか、私はそれらを完全に忘れることができるかどうか疑問に思っています。
おかげ
答えをありがとう。だから、AsynctaskとThreadの代わりにrxjavaを使うのはどういう意味ですか?答えに「慎重に」という意味を明確にしてください。ありがとう –