美文网首页
Android SocketClient休眠断开的问题

Android SocketClient休眠断开的问题

作者: 九月风666 | 来源:发表于2020-03-09 15:18 被阅读0次

之前学习了SocketClient的使用,并且用它成功实现了项目的开发(具体见本人上一篇帖子:Android SocketClient使用实例)。不过后来测到一个问题,就是打开我们的app连接上socket之后,如果点手机home键,切出去一会儿(大概三分钟左右),然后再切进我们的app,经常会出现socket断开连接的情况。

最开始以为是心跳包的问题,因为心跳包的收发是我们自己在客户端实现的,不是在android原生实现的。然后各种改测,发现并不是心跳包的问题。然后怀疑是SocketClient的源码有问题,但是检查了下也没看出什么毛病,实在是郁闷。所幸在网上看到有网友也遇到手机休眠导致socket断开的问题,说是android系统出于节电考虑,在屏幕关闭一段时间后会将socket服务挂起。虽然情况不太一样(毕竟人家是休眠,我的是切出去),但是导致的结果很像。抱着死马当作活马医的心态,用[PowerManager](https://developer.android.com/reference/android/os/PowerManager.html#newWakeLock(int,)试了试,结果还真管用,而且锁屏也不会导致socket断开了!

下面是通过PowerManager设置电源模式,使cpu不进入节电模式:

  1. PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
  2. PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
  3. wl.acquire();
  4. ..screen will stay on during this section..
  5. wl.release();

因为app使用activity,故在oncreate中wl.acquire();,在ondestroy中wl.release();

加权限:android.permission.WAKE_LOCK

问题到此暂时解决。

参考:https://www.jianshu.com/p/45957e180925
https://blog.csdn.net/hhbgk/article/details/49997291

您的赞赏是我坚持分享的最大动力 :)

相关文章

  • Android SocketClient休眠断开的问题

    之前学习了SocketClient的使用,并且用它成功实现了项目的开发(具体见本人上一篇帖子:Android So...

  • Android SocketClient使用实例

    开发用到了socket通信,本来想用android自带的socket来实现,结果写的过程中遇到了各种问题(此处省略...

  • SocketClient

    /*初始化客户端,并连接服务器*/ func connectServer(addr: String,port: I...

  • 【Android休眠】之Android休眠机制

    一、休眠概述 休眠,简而言之就是设备在不需要工作的时候把一些部件、外设关掉(掉电或让它进入低功耗模式)。为什么要休...

  • Android 休眠

    SystemClock.sleep() 是 Android 提供线程休眠函数,与 Thread.sleep() 最...

  • Android设备CPU休眠问题分析

    1.减少CPU消耗即省电 软件层面阻止CPU休眠的几个因素: 可以使用电池分析工具Battery Historia...

  • AndroidBLE开发过程中遇到的问题记录

    Android BLE 开发过程中遇到的问题记录 1.断开连接后出现133错误 在断开连接之后再次连接经常会出现1...

  • 关于android usb 连接断开的问题

    一.Windows 系统配置USB连接 1.配置相对于机型的驱动2.如果能选择内存使用不相干模式开启adb,尽量选...

  • adb connect无线连接android设备

    使用adb connect,可以通过无线连接到android设备 连接语法: 断开连接: 示例 可能遇到的问题 问...

  • Java深度拷贝

    标签: Android 内存相关 Why 直接赋值无法断开引用浅拷贝在含有内部对象引用的时候无法断开引用断开引用防...

网友评论

      本文标题:Android SocketClient休眠断开的问题

      本文链接:https://www.haomeiwen.com/subject/ouspdhtx.html