Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin.android 实现NetworkStatusBroadcastReceiver示例_Xamarin.android_Xamarin - Fatal编程技术网

Xamarin.android 实现NetworkStatusBroadcastReceiver示例

Xamarin.android 实现NetworkStatusBroadcastReceiver示例,xamarin.android,xamarin,Xamarin.android,Xamarin,我正在尝试实现一个BroadcastReceiver,它将在网络状态发生更改时通知我。当我在失去互联网连接后恢复互联网连接时,我将使用它将本地数据同步回主服务器 首先,我看了这个例子: 然后,我的广播接收器如下所示: [BroadcastReceiver()] public class NetworkStatusBroadcastReceiver: BroadcastReceiver { public event EventHandler ConnectionStatusChanged

我正在尝试实现一个BroadcastReceiver,它将在网络状态发生更改时通知我。当我在失去互联网连接后恢复互联网连接时,我将使用它将本地数据同步回主服务器

首先,我看了这个例子:

然后,我的广播接收器如下所示:

[BroadcastReceiver()]
public class NetworkStatusBroadcastReceiver: BroadcastReceiver {

    public event EventHandler ConnectionStatusChanged;

    public override void OnReceive (Context context, Intent intent)
    {
        if (ConnectionStatusChanged != null)
            ConnectionStatusChanged (this, EventArgs.Empty);
    }
}
现在我的问题是。。。我在哪里初始化它?我在哪里放置以下Start()和Stop()方法


很抱歉这个可能很愚蠢的问题,但对Xamarin和Android来说还是个新问题。

我认为下面的链接很有帮助。我在网络状态更改时收到通知。 见本页底部布拉德利的答案

[BroadcastReceiver()]
public class NetworkStatusBroadcastReceiver: BroadcastReceiver {

    public event EventHandler ConnectionStatusChanged;

    public override void OnReceive (Context context, Intent intent)
    {
        if (ConnectionStatusChanged != null)
            ConnectionStatusChanged (this, EventArgs.Empty);
    }
}
public event EventHandler NetworkStatusChanged;

public void Start ()  
{
    if (_broadcastReceiver != null) {
        throw new InvalidOperationException (
            "Network status monitoring already active.");
    }

    // Create the broadcast receiver and bind the event handler
    // so that the app gets updates of the network connectivity status
    _broadcastReceiver = new NetworkStatusBroadcastReceiver ();
    _broadcastReceiver.ConnectionStatusChanged += OnNetworkStatusChanged;

    // Register the broadcast receiver
    Application.Context.RegisterReceiver (_broadcastReceiver, 
      new IntentFilter (ConnectivityManager.ConnectivityAction));
}

void OnNetworkStatusChanged (object sender, EventArgs e)  
{
    var currentStatus = _state;

    UpdateNetworkStatus ();

    if (currentStatus != _state && NetworkStatusChanged != null) {
        NetworkStatusChanged (this, EventArgs.Empty);
    }
}


public void Stop() {  
    if (_broadcastReceiver == null) {
        throw new InvalidOperationException (
            "Network status monitoring not active.");
    }

    // Unregister the receiver so we no longer get updates.
    Application.Context.UnregisterReceiver (_broadcastReceiver);

    // Set the variable to nil, so that we know the receiver is no longer used.
    _broadcastReceiver.ConnectionStatusChanged -= OnNetworkStatusChanged;
    _broadcastReceiver = null;
}