Xamarin Android 传递数据

Xamarin Android passing data

我目前在后台有一项服务 运行 可以访问纬度和经度等位置属性。每次服务 OnLocationChange 命中时,我都会将数据发送到广播接收器。广播接收器 class 等待并接收纬度和经度并将它们很好地存储为双精度值。

我现在想从广播接收器访问两个双打 class。我试过 Get 和 Set 方法,但数据总是以 null 或 0 传递。

这是我的默认接收器 class,没有实现任何获取设置方法:

[BroadcastReceiver(Enabled = true)]
[IntentFilter(new[] { "GpsReceiever" })]
public class GPSReceiver : BroadcastReceiver
{
    public double latData;
    public double longData;
    public double altData;
    public float accData;

    public override void OnReceive(Context context, Intent intent)
    {
        latData = intent.Extras.GetDouble("lat");
        longData = intent.Extras.GetDouble("long");
        altData = intent.Extras.GetDouble("alt");
        accData = intent.Extras.GetFloat("acc");
    }
}

我可以将数据传递给另一个 class 吗?如果可以,我该怎么做?

感谢您的宝贵时间!

有几个选项。

  • 在上下文中注册接收器,例如activity 或服务,并在应该接收通知的构造函数中传递 class register receiver
  • 将它们作为静态变量(不是一个非常优雅的解决方案)在接收器或某种代表您的数据的单例class上
  • 如果你想通知一个服务并且你希望它是 运行 或想启动它你可以调用 startService 加上适当的额外内容并在 onStartCommand 中读取它们。请注意,您可以使用 activity 执行类似的操作,但您必须更改可能不需要的启动模式。

另请阅读: Broadcast receiver's life cycle