2013-05-08 175 views
0

我正在研究必须在后台工作的应用程序,它必须发送地理定位。它已经在制作中,我们有时会遇到一个问题,即应用程序只是停止发送信息。Android丢失网络连接,并保持断开连接

似乎只有电话重新启动有帮助。

现在我必须解决这个问题,在我看来,重置Networkstack可以解决问题。我的问题是,我如何编程重置网络连接?或者是否有人对此问题有任何其他建议。

回答

0

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

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

为什么我的代码

此功能不赞成组网络连接可以花费用户。因此提出通知并让用户启动网络连接。

是的,如果用户dosn't启动网络连接您的应用程序不会发布位置了。


更新监听设备的网络状态

注册一个接收器,以监听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

+0

问题是这样的。我怎么知道互联网连接是否因为没有可用的网络连接而消失了,在这种情况下,正确的做法就是等待用户返回到范围内,以及电话网络堆栈崩溃的情况。 – nickik 2013-05-08 14:35:22

+0

@nickik看到我更新的答案。 – 2013-05-09 05:12:25

+0

@nickik你找到这个答案对不对? – 2014-08-27 13:17:38