android-Xamarin.Mobile:标记为过时的基于任务的API

最新版本的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).

上一篇:CodeGo.net>如何使用UIAlertController从UIViewController显示警报消息


下一篇:如何正确获取android.net.Uri的文件大小?