Android失去网络连接并保持断开状态

时间:2013-05-08 13:45:23

标签: android networking

我正在开发一个必须在后台工作的应用程序,它必须发送Geolocation。它已经全部投入生产,我们有时会遇到App只是阻止发送信息的问题。

似乎只有重新启动手机才有帮助。

现在我必须以某种方式解决这个问题,在我看来,重置Networkstack会解决问题。我的问题是,我怎样才能以编程方式重置网络连接?或者是否有人对此问题有任何其他建议。

1 个答案:

答案 0 :(得分:0)

  

如何编程重置网络连接?还是有人   对此问题有任何其他建议。

您不应该以编程方式启动网络连接。我建议您在将位置发布到服务器之前检查网络连接,如果设备断开连接,则向用户显示通知以启用网络连接。

为什么我不赞成通过代码设置网络连接

此功能可能会使用户付出代价。因此,提出通知并让用户启动网络连接。

是的,如果用户没有启动网络连接,您的应用程序将不再发布位置。


侦听设备网络状态更新

注册接收者以收听CONNECTIVITY_ACTION

例如:

BroadcastReceiver sampleNetworkStateReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.w("sampleNetworkStateReceiver", "Network State has Changed");
    //For a disconnect event, the boolean extra EXTRA_NO_CONNECTIVITY is set to true if there are no connected networks at all.
        // So you need to get EXTRA_NO_CONNECTIVITY extra from intent.
        // that will tell you if device has loses the conectivity.  

        boolean noConnectivity =
            intent.getBooleanExtra(ConnectivityManager.EXTRA_NO_CONNECTIVITY, false);

        if (noConnectivity) {
            //TODO: Task for Device has no connection
        } else {
            //TODO: Task for Device has connection
        }
    }
};

IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);        
registerReceiver(sampleNetworkStateReceiver, filter);

参考:NetworkConnectivityListenerDetermining and Monitoring the Connectivity Status