如果屏幕关闭并与充电器断开连接,活动线程会发生什么情况?

发布于 2024-11-07 00:36:38 字数 323 浏览 0 评论 0原文

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

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

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

我的做法正确吗?有更好的方法吗?

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

I have an application which works on a user's session which is maintained between the server and the device. I using a ping technique to keep the session alive between the device and server by pinging the server every 1 min if the user is logged in. This is done using a background thread.

  1. Sometimes when I turn OFF the screen and disconnect the device from its power source the background thread gets killed.

  2. Sometimes the thread is active but my WiFi antennae gets turned OFF and my ping fails.

Is my approach correct? Is there a better way of doing this?

My requirement: I need to ping my server every minute to keep the session alive for various reasons and I should do this only if the user is logged in.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

七度光 2024-11-14 00:36:38

您可以使用它来检查您的 wi-fi 连接,

private boolean checkInternetConnection()
{
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
    return conMgr.getActiveNetworkInfo().isConnectedOrConnecting();
}

使用它来打开 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>

如果 checkInternetConnection() == false 您可以在清单中使用它并在代码中

WifiManager wifiManager;
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()){
   wifiManager.setWifiEnabled(false);
}else{
   wifiManager.setWifiEnabled(true);
}

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

You can use this to check your wi-fi connection

private boolean checkInternetConnection()
{
    ConnectivityManager conMgr = (ConnectivityManager) getSystemService (Context.CONNECTIVITY_SERVICE);
    return conMgr.getActiveNetworkInfo().isConnectedOrConnecting();
}

if checkInternetConnection() == false you can turn on wi-fi using this in your manifest

<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>

and this in your code

WifiManager wifiManager;
wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
if(wifiManager.isWifiEnabled()){
   wifiManager.setWifiEnabled(false);
}else{
   wifiManager.setWifiEnabled(true);
}

I hope this help you, though this is not an exact answer to your question.

余罪 2024-11-14 00:36:38

Activity生命周期事件发生时,例如onPause,使用Log.d将消息写入LogcatonStoponDestroyonCreateonStartonResume。另外,创建一个 BroadcastReceiver 来记录广播事件也是最有帮助的。

Use Log.d to write messages to the Logcat when an Activity life cycle event occurs, such as onPause, onStop, onDestroy, onCreate, onStart and onResume. Also creating a BroadcastReceiver to log broadcast events is most helpful.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文