首页 > 解决方案 > 在棉花糖设备上收到第一条消息后,广播接收器 onreceive 方法中的上下文参数发生变化

问题描述

我在 Xamarin 项目中运行 Marshmallow 的一加二设备上的广播接收器上看到了一些非常奇怪的行为。我有一项用于更改位置的服务,并且我在我的活动中注册了一个广播接收器以收听来自该服务的消息。第一次收到消息时,context 参数是正确的(注册接收者的 mainactivity 的上下文)。但是,第二次收到消息时,上下文是应用程序上下文,因此我无法更新 mainactivity 上的任何内容。我还在使用运行 Oreo 的 Galaxy S8 Active 进行测试,并且在该设备上,上下文每次都是正确的。

我还在 Android Studio 中为我的广播接收器使用匿名类型构建了相同的应用程序,并且在那里,上下文每次在两个设备上都是正确的。

这是一个可能的 xamarin 错误吗?我完全不知道下一步该去哪里。我没有任何其他设备可供测试,但我认为其他运行旧版本 android 的设备会遇到与此一加二相同的问题。

另外,为了它的价值,我尝试了三种不同的方法来从接收器更新 mainactivity。1)将mainactivity的一个实例传递给broadcastreceiver的构造函数,然后调用该set属性的方法2)将上下文转换为mainactivity并从那里调用方法3)创建一个自定义事件处理程序并在broadcastreciver中添加一个事件,然后添加接收者实例的委托,并从自定义事件处理程序中获取我需要的值。

这三个都很好,但只有第一条消息。随着后续消息出现不同的上下文,显然它们都不起作用。

标签: androidxamarinxamarin.androidbroadcastreceiver

解决方案


推荐阅读