Android连接

时间:2012-12-14 09:44:06

标签: android broadcastreceiver connectivity

我创建了一个需要随时连接到远程套接字服务器的应用程序。

为了这样做,我已经为连接更改注册了BroadcastReceiver。 每次Receiver触发时 - 应用程序都会断开与服务器的连接并创建新连接。 它这样做是为了保留一个实时和连接的套接字连接。

在我的手机和我检查过的其他手机中很少用。 但是我发现其他一些手机在连接到移动提供商数据连接时 - 经常调用接收器,连接没有任何实际变化。

有没有办法让我知道连接是否真的有变化?此外,为什么接收器经常发射?

1 个答案:

答案 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);
}