【问题标题】:What happens to ACTIVITY threads if SCREEN OFF and disconnected from charger?如果屏幕关闭并与充电器断开连接,ACTIVITY 线程会发生什么情况?
【发布时间】:2011-05-12 16:02:35
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案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);
    }
    

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

    【讨论】:

    • 太棒了。谢谢乔治。但是否建议应用在用户不知情的情况下连接 WIFI?如果用户不在任何WIFI范围内如何处理?该应用程序是否应该用于蜂窝数据?我可以像处理 WIFI 一样处理蜂窝数据吗?
    • 当用户安装您的应用程序时,他会阅读所有使用权限,这就是为什么您可以在用户不知情的情况下连接到 WIFI。对不起,对不起,我没有尝试回答这个问题,因为没有必要
    • 哦,没关系。我的意思是用户在屏幕关闭和 WIFI 应该关闭的意义上的知识,然后你踢 WIFIMANAGER 以启用 WIFI 天线并重新连接到网络。这是用户不期望的。可以吗?还是做事不好?只是想澄清一下
    • 我没有看到任何问题,当用户安装您的.apk 时,他知道他赋予这个.apk 什么权限))
    【解决方案2】:

    Activity生命周期事件发生时,使用Log.dLogcat写入消息,例如onPauseonStoponDestroyonCreateonStartonResume .此外,创建BroadcastReceiver 来记录广播事件也很有帮助。

    【讨论】:

      猜你喜欢
      • 2014-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-15
      相关资源
      最近更新 更多