如果SCREEN OFF并与充电器断开连接,ACTIVITY线程会发生什么?

时间:2011-05-12 00:56:08

标签: android session android-activity screen thread-sleep

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

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

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

  3. 我的方法是否正确?有没有更好的方法呢?

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

2 个答案:

答案 0 :(得分: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);
}

我希望这可以帮到你,虽然这不是你问题的确切答案。

答案 1 :(得分:0)

Log.d生命周期事件发生时,使用LogcatActivity发送消息,例如onPauseonStoponDestroyonCreateonStartonResume。另外,创建BroadcastReceiver来记录广播事件也是非常有用的。