广播接收者onreceive方法中的上下文参数在marshmallow设备上收到第一条消息后发生变化

时间:2018-05-20 05:59:19

标签: android xamarin xamarin.android broadcastreceiver

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

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

这是一个可能的xamarin bug吗?我完全失去了下一个转弯的地方。我没有其他可以测试的设备,但我认为运行旧版Android的其他设备会遇到与One Plus Two相同的问题。

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

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

0 个答案:

没有答案