可以异步/等待了解Android活动生命周期吗?
我一直想知道使用async / await在Android上生成响应式UI。 我一直在使用一个简单的发布/子包装服务围绕异步函数(这是很多样板,但工作)但我有这个痒在我身边,告诉我应该有一个更好的方法。
对包装器服务的需求源于android上的活动在配置更改(设备轮换,语言更改……)上被“回收”(销毁和重新创建)这一事实,因此,如果我触发异步function,则可能会生成await回调被破坏的活动和各种各样的坏事可能源于此。
异步后端是否可以知道代码应该在不同的对象(新创建的活动)中启动,而不需要编译器黑暗魔法?
理由 :使用Xamarin在iOS和Android之间共享代码都很容易,直到你遇到这个问题。 如果以某种方式解决/实现,我看到两个平台之间的共同控制器的潜力。
编辑:我决定用事件总线(TinyMessenger)解决这个问题,同时我理解@Servy提出的SynchronizationContext
解决方案
当然,它专门设计用于做到这一点。 每当你点击await
它将检查SynchronizationContext.Current
的值,它将继续发布到该上下文。 如果您希望特定回调到特定上下文,您只需要将当前上下文设置为适当编组回调的SynchronizationContext
对象…但是您需要对它们进行封送处理。
- Xamarin(Android)unit testing在Visual Studio 2017中
- 将Unity ARCore中的AcquireCameraImageBytes()保存为存储为图像
- 如何从post async http请求下载数据时将数据加载到reclyerview中
- 用于GCM的服务器将通知推送到C#中的android
- 如何从Uri xamarin android获取实际路径
- WCF Restful服务文件上传,支持多平台
- Android C2DM Invalidregistration
- 混合Action和API调用时Xamarin崩溃(线程问题?)
- Scrollview监听器在Xamarin for Android中无效?