最新版本的Xamarin.Mobile组件淘汰了一些基于任务的Android Android。发布说明简要评论:
鉴于任务的脆弱性<>基于活动生命周期现实的基于Android的API,异步API现在标记为[已废弃]专门针对Android。
有人可以解释这里脆弱的含义吗?
答案 0 :(得分:3)
基本上,跨应用程序生命周期边界使用Task
会遇到麻烦。当相机Activity
在Android上启动时,您实际上正在启动一个全新的应用。您的应用程序不再在前台运行,因此Android完全有权终止您的应用程序并在相机返回时重新启动它。如果发生这种情况,您的Task
实例已被销毁,因此您拥有的任何await
或ContinueWith
将永远无法执行。这不是Task
/ Android问题,它只是Xamarin.Mobile中的一个设计缺陷。
因此,不赞成使用OnActivityResult
的魔术API,因为它是正确处理这种情况的唯一方法。如果您发现,新API GetMediaFileExtraAsync
仍会返回Task<MediaFile>
。
(来源:我写过Xamarin.Mobile)。