0

我有一个在服务器和设备之间维护的用户会话上工作的应用程序。如果用户登录,我使用 ping 技术通过每 1 分钟 ping 服务器来保持设备和服务器之间的会话活动。这是使用后台线程完成的。

  1. 有时,当我关闭屏幕并断开设备与电源的连接时,后台线程会被杀死。

  2. 有时线程处于活动状态,但我的 WiFi 天线被关闭并且我的 ping 失败。

我的方法正确吗?有没有更好的方法来做到这一点?

我的要求:由于各种原因,我需要每分钟 ping 我的服务器以保持会话处于活动状态,并且只有在用户登录时才应该这样做。

4

2 回答 2

1

您可以使用它来检查您的 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);
}

我希望这对您有所帮助,尽管这不是您问题的确切答案。

于 2011-05-12T08:02:35.380 回答
0

用于在生命周期事件发生时Log.d写入消息,例如、、、和。创建一个记录广播事件也是最有帮助的。LogcatActivityonPauseonStoponDestroyonCreateonStartonResumeBroadcastReceiver

于 2011-05-12T01:15:08.607 回答