最新发布的Xamarin.Mobile组件淘汰了一些基于任务的安卓API。发布说明对此作了简要评论:
考虑到由于活动生命周期的现实,基于Task<>的API的脆弱性,异步API现在被标记为是过时的,专门用于Android。
有人能解释一下这里的脆弱意味着什么吗?
发布于 2013-10-22 16:25:46
本质上,跨越应用程序生命周期边界使用Task是自找麻烦。当摄像头Activity在安卓系统上启动时,你实际上是在启动一个全新的应用程序。你的应用程序不再在前台运行,所以Android完全有权利关掉你的应用程序,当相机回来的时候重新启动它。如果发生这种情况,您的Task实例已经被销毁,因此您所拥有的任何await或ContinueWith都将永远不会执行。这不是Task/Android问题,它只是Xamarin.Mobile中的一个设计缺陷。
因此,不再推荐使用OnActivityResult的神奇API,因为它是正确处理这种情况的唯一方法。如果您注意到,新的API GetMediaFileExtraAsync仍然返回一个Task<MediaFile>。
(来源:我写了Xamarin.Mobile)。
https://stackoverflow.com/questions/19295368
复制相似问题