别再使⽤AsyncTask了,它已经被正式弃⽤了
AsyncTask
长久以来,AsyncTask在Android开发中⼀直扮演着⼀个重要的⾓⾊,它主要⽤于执⾏⼀些不太长的异步任务。作为⽤来替代Thread + Handler的辅助类,AsyncTask可以很轻松地执⾏异步任务并更新ui,但由于context泄露,回调遗漏,configuration变化导致崩溃,平台差异性等原因,在api 30(Android 11)中AsyncTask被正式废弃:
deprecated!
被弃⽤后,Android给出了两个替代的建议:
1. urrent包下的相关类,如Executor,ThreadPoolExecutor,FutureTask。
2. kotlin并发⼯具,那就是协程 - Coroutines了。
Coroutines
随着kotlin在Android开发中的逐渐主流化,协程的地位也在不断提⾼,在Android开发者官⽹的kotlin页⾯中,能看到协程作为其特性之⼀被列出来:
协程已经被官⽅钦定android retrofit
⾕歌为何推荐使⽤协程?
个⼈认为,第⼀个原因是kotlin,作为⾕歌⼲⼉⼦的kotlin已经成为Android⾸要开发语⾔,协程作为其特性之⼀,被钦定为AsyncTask的替代者也很正常。
⽽更重要的原因,kotlin的协程具有很多优点,在Android上⼤有可为:
1. 结构化并发,⽤同步的⽅式写异步代码,可以帮助减少内存泄露等问题。
2. 不需要写回调,使异步代码清晰,简洁。
3. ⽀持取消,可以很好地与Activity/Fragment的⽣命周期搭配使⽤。
4. 轻量级:协程是轻量级的线程,可以在⼀个线程上运⾏多个协程,协程⽀持暂停⽽不会造成线程阻塞。
协程的简单使⽤(⼀个有点抽象的新闻加载例⼦)
1. Retrofit:使⽤suspend关键字修饰接⼝:
在RxJava在Android上兴起之时,⾯对如此优雅⽽强⼤的对⼿,可以预想到⾃⾝不⾜的AsyncTask肯定会被淘汰,没想到最后把它打倒的却是kotlin的协程,kotlin果然⽼后浪了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论