问题描述
我有一堆 Wi-Fi 设备需要连接,执行/发送一些命令,然后断开连接。
我使用 connectivityManager.RequestNetwork(myRequest,myNetworkCallback);
连接到他们
然后我执行所需的操作,并通过这样做我的应用程序导航到多个页面。
一切都完成后,我想断开与设备的连接。
为了实现这一点,我需要调用 connectivityManager.UnregisterNetworkCallback(myNetworkCallback);
我的问题是我希望将 Connect() 和 disconnect() 方法作为两个独立的命令,而不必保存“myNetworkCallback”以将其传递到 disconnect() 中。
我不需要以任何方式保存网络并且我永久知道它的 Ssid。
有没有办法完全丢弃这个网络而不必将回调作为参数传递?
解决方法
如果你不想传递任何参数,你可以创建一个没有任何属性的NetworkCallback。
创建ConnectivityManager
的子类public class SubConnectivityManager : ConnectivityManager
{
public SubConnectivityManager(IntPtr javaReference,JniHandleOwnership transfer) : base(javaReference,transfer)
{
}
public void CustomUnregisterNetworkCallback()
{
this.UnregisterNetworkCallback(new NetworkCallback());
}
}
SubConnectivityManager connectivityManager = (SubConnectivityManager)this.GetSystemService(Android.Content.Context.ConnectivityService);
connectivityManager.CustomUnregisterNetworkCallback();