我的应用程序在后台运行(作为服务),需要一直连接到远程服务器才能接收和发送消息。
该服务运行一个管理与服务器的连接的线程(使用套接字)
我正在尝试编写一个互联网连接广播接收器,它将在每次互联网状态更改时运行,并检查状态是否已连接或断开连接。
我的问题如下:当我连接到 Wi-Fi 网络时,广播接收器意图被触发了几次,在所有这些中,互联网连接的状态都是真实的(每次火灾之间没有断开连接,这意味着我很少new Threads 使用 Socket 连接服务器。
我如何确保我获得了正确的互联网状态,并且正确的意思是当且仅当连接已连接时,.isConnected() 方法才会返回?
这是我的代码:
public void onReceive(Context context, Intent intent)
{
action = intent.getAction();
app = (AppVariables) context.getApplicationContext();
if (app.isApplicationInitilized())
{
if (action.equals(action.equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)))
{
networkInfo = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (networkInfo.isConnected())
app.getServerConnectionManager().startServer();
}
else if(action.equals(ConnectivityManager.CONNECTIVITY_ACTION))
{
networkInfo = intent.getParcelableExtra(ConnectivityManager.EXTRA_NETWORK_INFO);
if(networkInfo.getType() == ConnectivityManager.TYPE_WIFI && !networkInfo.isConnected())
app.getServerConnectionManager().stopServer(false);
else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE && !networkInfo.isConnected())
app.getServerConnectionManager().stopServer(false);
else
app.getServerConnectionManager().startServer();
}
}
}