替换现有项目中的 Asynctask 无需太多代码更改
Posted
技术标签:
【中文标题】替换现有项目中的 Asynctask 无需太多代码更改【英文标题】:Replacing Asynctask in existing projects without much code changes 【发布时间】:2021-06-21 20:15:56 【问题描述】:我们的项目是 5 年前的 android 原生项目。我们使用 Asynctask 在每个屏幕上进行 API 调用。
根据文档,Asynctask 从 Android 11 开始被弃用。目前我们的项目在 Play 商店中,有 n 个活跃用户。它在 android 11 设备上运行良好,也没有任何问题
这里我有 2 个查询
1) Asynctask 在 Android 11 操作系统及以下版本上仍然可以正常工作。它会影响 android 12 操作系统吗。我也没有得到任何关于在 android 开发者网站上完全删除 Asynctask 的明确信息。 我是否需要认真对待这一点,并且必须通过替换 Asynctask 来更新我的整个项目?这会影响即将推出的操作系统版本吗?
2)如果我想替换它意味着什么将是最好的选择,而不需要做太多的代码更改。甚至谷歌也建议一些 API 框架,如并发和协程作为最好的替代品。但我不知道如何在现有类中替换。因为在每个类中我们都在调用 AsncTask 来进行 API 调用。在 onpostexecute 中,我们正在处理响应解析.
请建议一些替代选项,它们不会对代码进行太多更改和有效的性能..
在此先感谢.......
【问题讨论】:
【参考方案1】:这里我有 2 个查询
只有 2 个?你确定吗?
1)Asynctask 在 Android 11 及以下版本的操作系统上仍然可以正常工作。它会影响 android 12 操作系统吗?
这不太可能。
我也没有得到任何关于在 android 开发者网站上完全删除 Asynctask 的明确信息。
正确。人们会假设(希望)Google 会在决定完全删除它时发布一个非常公开的声明。
我是否需要认真对待这件事,并且必须通过替换 Asynctask 来更新我的整个项目?
如果你有时间,你需要提醒你应该停止使用AsyncTask
并在你的代码中替换它的使用。
它会影响即将推出的操作系统版本吗?
只有 Google 的某个人才能回答这个问题,而且他们不会回答。
2)如果我想替换这意味着什么将是最好的选择,而无需进行太多代码更改。甚至谷歌也建议一些 API 框架,如并发和协程作为最好的替代品。但我不知道如何在现有类中替换。因为在每个类中我们都在调用 AsncTask 来进行 API 调用。在 onpostexecute 中,我们正在处理响应解析.
“最佳选择”将取决于您的代码。谷歌搜索“asynctask to coroutines”或类似的东西,你会发现很多关于这个主题的博客文章。
【讨论】:
感谢您的回答。我决定根据我们的项目结构使用“Volley”库。将来有没有机会像 AsyncTask 一样弃用 volley?有什么想法吗? 这是 volley 开发者/维护者的问题。以上是关于替换现有项目中的 Asynctask 无需太多代码更改的主要内容,如果未能解决你的问题,请参考以下文章