我正在开发一个必须在后台工作的应用程序,它必须发送Geolocation。它已经全部投入生产,我们有时会遇到App只是阻止发送信息的问题。
似乎只有重新启动手机才有帮助。
现在我必须以某种方式解决这个问题,在我看来,重置Networkstack会解决问题。我的问题是,我怎样才能以编程方式重置网络连接?或者是否有人对此问题有任何其他建议。
答案 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);
参考:NetworkConnectivityListener和Determining and Monitoring the Connectivity Status