C# async/await能否了解Android活动生命周期?

C# async/await能否了解Android活动生命周期?,c#,android,asynchronous,xamarin,C#,Android,Asynchronous,Xamarin,我一直想知道在Android上使用async/await来生成响应性UI的情况。我一直在围绕异步函数使用一个简单的pub/sub包装器服务(这是一个相当多的样板文件,但很管用),但我有一个想法告诉我应该有一个更好的方法 对包装器服务的需求源于这样一个事实,即android上的活动在配置更改(设备旋转、语言更改等)时会被“回收”(销毁和重新创建),因此,如果我启动一个异步函数,那么等待回调可能会在销毁的活动上生成,并且所有类型的坏消息都可能由此产生 异步后端是否能够意识到代码应该在不同的对象(新创

我一直想知道在Android上使用async/await来生成响应性UI的情况。我一直在围绕异步函数使用一个简单的pub/sub包装器服务(这是一个相当多的样板文件,但很管用),但我有一个想法告诉我应该有一个更好的方法

对包装器服务的需求源于这样一个事实,即android上的活动在配置更改(设备旋转、语言更改等)时会被“回收”(销毁和重新创建),因此,如果我启动一个异步函数,那么等待回调可能会在销毁的活动上生成,并且所有类型的坏消息都可能由此产生

异步后端是否能够意识到代码应该在不同的对象(新创建的活动)中触发,而不使用编译器暗魔法

基本原理:在遇到这个问题之前,使用Xamarin在iOS和Android之间共享代码是非常简单的。如果能以某种方式解决/实现这一问题,我认为这两个平台之间可能存在通用控制器

编辑:
我决定用事件总线(TinyMessenger)解决这个问题,同时我了解@Servy提出的
SynchronizationContext
解决方案。当然,它是专门为此设计的。每当您点击
wait
时,它将检查
SynchronizationContext.Current
的值,并将继续部分发布到该上下文。如果您想要一个特定的回调到一个特定的上下文,您只需要将当前上下文设置为一个
SynchronizationContext
对象,该对象将适当地封送您的回调…但是您需要封送它们。

确实是一个有趣的问题。有趣的。。。这个问题完全源于我浏览了该类的MSDN页面。我将深入调查此事