0

我正在开发一个必须在后台工作的应用程序,它必须发送地理位置。它已经投入生产,我们有时会遇到应用程序停止发送信息的问题。

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

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

4

1 回答 1

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);

参考:NetworkConnectivityListener确定和监控连接状态

于 2013-05-08T13:55:55.013 回答