我创建了一个需要随时连接到远程套接字服务器的应用程序。
为了这样做,我已经为连接更改注册了BroadcastReceiver
。
每次Receiver触发时 - 应用程序都会断开与服务器的连接并创建新连接。
它这样做是为了保留一个实时和连接的套接字连接。
在我的手机和我检查过的其他手机中很少用。 但是我发现其他一些手机在连接到移动提供商数据连接时 - 经常调用接收器,连接没有任何实际变化。
有没有办法让我知道连接是否真的有变化?此外,为什么接收器经常发射?
答案 0 :(得分:1)
好的,我找到了解决问题的方法,希望我能在某个时候帮助别人:
在我的BroadCast接收连接更改中:
@Override
public void onReceive(Context context, Intent intent) {
//my Application class where i store the last known state of connectivity
app = (AppVariables) context.getApplicationContext();
//new network state
networkState = ((NetworkInfo)intent.getExtras().get("networkInfo")).getState();
if (app.getLastNetworkState().equals(State.CONNECTED) && networkState.equals(State.DISCONNECTED))
{
Log.i("InternetConnectivity", "Internet Status Changed: disconnected");
if (app.getServerConnectionManager() != null)
app.getServerConnectionManager().stopServer(false, false);
if (app.getMainActivity() != null)
app.getMainActivity().showReconnectDialog();
app.setLastNetworkState(networkState);
}
else if (networkState.equals(State.CONNECTED))
app.setLastNetworkState(networkState);
}