【发布时间】:2012-11-26 15:59:02
【问题描述】:
我的应用在后台运行(作为服务),需要一直连接到远程服务器来接收和发送消息。
此服务运行一个线程来管理与服务器的连接(使用套接字)
我正在尝试编写一个互联网连接广播接收器,它会在每次互联网状态发生变化时运行,并检查状态是连接还是断开。
我的问题如下:当我连接到 Wi-Fi 网络时,Broadcast Receiver Intent 会被触发几次,在所有这些情况下,互联网连接的状态都是正确的(每次火灾之间没有断开连接,这意味着我使用 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();
}
}
}
【问题讨论】:
-
您正在使用的操作是什么,请告诉我。我也需要用。提前致谢