我有一个在服务器和设备之间维护的用户会话上工作的应用程序。如果用户登录,我使用 ping 技术通过每 1 分钟 ping 服务器来保持设备和服务器之间的会话活动。这是使用后台线程完成的。
有时,当我关闭屏幕并断开设备与电源的连接时,后台线程会被杀死。
有时线程处于活动状态,但我的 WiFi 天线被关闭并且我的 ping 失败。
我的方法正确吗?有没有更好的方法来做到这一点?
我的要求:由于各种原因,我需要每分钟 ping 我的服务器以保持会话处于活动状态,并且只有在用户登录时才应该这样做。
我有一个在服务器和设备之间维护的用户会话上工作的应用程序。如果用户登录,我使用 ping 技术通过每 1 分钟 ping 服务器来保持设备和服务器之间的会话活动。这是使用后台线程完成的。
有时,当我关闭屏幕并断开设备与电源的连接时,后台线程会被杀死。
有时线程处于活动状态,但我的 WiFi 天线被关闭并且我的 ping 失败。
我的方法正确吗?有没有更好的方法来做到这一点?
我的要求:由于各种原因,我需要每分钟 ping 我的服务器以保持会话处于活动状态,并且只有在用户登录时才应该这样做。
您可以使用它来检查您的 wi-fi 连接
private boolean checkInternetConnection()
{
ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
return conMgr.getActiveNetworkInfo().isConnectedOrConnecting();
}
如果 checkInternetConnection() == false 您可以在清单中使用它来打开 wi-fi
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>
这在你的代码中
WifiManager wifiManager;
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()){
wifiManager.setWifiEnabled(false);
}else{
wifiManager.setWifiEnabled(true);
}
我希望这对您有所帮助,尽管这不是您问题的确切答案。
用于在生命周期事件发生时Log.d
写入消息,例如、、、和。创建一个记录广播事件也是最有帮助的。Logcat
Activity
onPause
onStop
onDestroy
onCreate
onStart
onResume
BroadcastReceiver