最新版本的Xamarin.Mobile组件淘汰了一些基于任务的Android API.发行说明对此做了简短评论:
Given the fragility of the Task<> based API on Android due to Activity lifecycle realities, the async API is now marked [Obsolete] specifically for Android.
有人可以解释一下这是什么意思吗?
解决方法:
本质上,跨应用程序生命周期边界使用Task会带来麻烦.当摄像头活动在Android上启动时,实际上是在启动一个全新的应用程序.您的应用不再在前台运行,因此Android完全有权终止您的应用,并在相机返回时重新启动它.如果发生这种情况,则您的Task实例已被破坏,因此您将无法执行的任何等待或ContinueWiths.这不是Task / Android问题,而仅仅是Xamarin.Mobile中的设计缺陷.
结果,不赞成使用魔术API,而推荐使用OnActivityResult的API,因为这是正确处理这种情况的唯一方法.如果您注意到,新的API GetMediaFileExtraAsync仍会返回Task< MediaFile>.
(来源:我写了Xamarin.Mobile).