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