开发过程中,发现手机锁屏/休眠会导致通信有问题。调试后发现是socket断开了,这是与wifi有关系,而wifi的问题又与手机休眠有关。

1.可以手动设置

设置——无线和网络——WLAN——高级设定——睡眠期间保持WLAN开启——总是

然而,并不是所以有手机都有这个设置,因为有些系统被开发商定制(阄割)了。

2.代码设置

publicvoidsetWifiDormancy(Context context){

intvalue = Settings.System.getInt(context.getContentResolver(), Settings.System.WIFI_SLEEP_POLICY,  Settings.System.WIFI_SLEEP_POLICY_DEFAULT);

Log.d(TAG, "setWifiDormancy() returned: "+ value);

finalSharedPreferences prefs = context.getSharedPreferences("wifi_sleep_policy", Context.MODE_PRIVATE);

SharedPreferences.Editor editor = prefs.edit();

editor.putInt(ConfigManager.WIFI_SLEEP_POLICY, value);

editor.commit();

if(Settings.System.WIFI_SLEEP_POLICY_NEVER != value){

Settings.System.putInt(context.getContentResolver(), Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);

}

}

publicvoidrestoreWifiDormancy(Context context){

finalSharedPreferences prefs = context.getSharedPreferences("wifi_sleep_policy", Context.MODE_PRIVATE);

intdefaultPolicy = prefs.getInt(ConfigManager.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_DEFAULT);

Settings.System.putInt(context.getContentResolver(), Settings.System.WIFI_SLEEP_POLICY, defaultPolicy);

} 加权限:

ref:http://blog.csdn.net/mrlixirong/article/details/24938637

然而,对我的应用却无效 。上述文章作者最后使用service解决了“当采用Service时,网络连接就持续保持顺畅了。而且不管WIFI休眠政策设置如何,黑屏以后都可以保持联网”。下次有时间再验证这种方法。

3.在2的基础上,结合PowerManager使用。

PowerManagerpm= (PowerManager) getSystemService(Context.POWER_SERVICE);

PowerManager.WakeLock wl=pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");

wl.acquire();

..screen will stay on during this section..

wl.release();

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

android.permission.WAKE_LOCK

问题到此暂时解决。

ref:http://stackoverflow.com/questions/22025888/keeping-wifi-connection-on-when-android-mobile-sleeps

来自:http://blog.csdn.net/hhbgk/article/details/49997291

android 熄屏 socket断开,Android 休眠导致的问题Socket断开相关推荐

  1. android 熄屏 后台运行,Android进程保活/息屏后后台保持定位、网络运行

    Android 设备在黑屏的分钟后可能会发生多种情况: 应用程序切后台后进程资源被系统回收,导致不能持续定位. 解决办法: 长连接定时唤醒cpu(解决黑屏定位.黑屏断网问题) 对于原生Android系 ...

  2. android横竖屏切换函数,Android横竖屏切换小结.PDF

    Android横竖屏切换小结 Android横竖屏切换小结 Android手机或平板都会存在横竖屏切换的功能,通常是由物理重力感应触发的,但是 有时候也不尽然,通常在设置里面我们可以对手机的横竖屏切换 ...

  3. android 熄屏后socket,手机熄屏再唤醒后 websocket 的重连方法。

    使用websocket长连接进行实时通信,在制作客服聊天或是必要的数据实时更新需求中是很好的选择,毕竟轮询大家都懂的 但是websocket服务端通常为了保证资源的有效利用,会加入心跳机制,当超过心跳 ...

  4. Android熄屏与亮屏控制

    目前做一个项目,需要做到熄屏与亮屏,网上找了很多,都是利用PowerManager,但是需要系统权限,这个比较麻烦,后面找到一个,测试发现可行的方案,就是利用设备管理器DevicePolicyMana ...

  5. android锁屏软件开发,Android一键锁屏开发全过程

    一.项目简介: 项目:<Android 一键锁屏> 开发周期:4天 代码量:100行 二.项目流程: 三.项目代码 1.主程序代码: 1.private DevicePolicyManag ...

  6. android横竖屏切换动画,Android应用怎么实现屏幕横竖屏切换功能

    Android应用怎么实现屏幕横竖屏切换功能 发布时间:2020-11-26 15:48:57 来源:亿速云 阅读:121 作者:Leah Android应用怎么实现屏幕横竖屏切换功能?针对这个问题, ...

  7. android 竖屏资源文件,Android不同分辨率屏幕下自适应资源文件

    1.不同的layout Android手机屏幕大小不一,有480x320,640x360,800x480.怎样才能让App自动适应不同的屏幕呢? 其实很简单,只需要在res目录下创建不同的layout ...

  8. 如何调用android录屏功能吗,Android录屏功能的实现

    最近做一个Android开发的项目用到了录屏的功能,开始查阅了一些资料和博客,基本上都是在讨论ROOT的.直到后来在github上看到一个比较新的代码,才恍然发现,Android 5.0时候开放了一个 ...

  9. xamarin Android 截屏,xamarin开发android收集的一些工具

    xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新. Vi ...

  10. android横竖屏切换方法,Android 4.0 横竖屏切换注意事项

    ==Android 2.3以前的横竖屏切换== 在Android 2.3平台上,我们可以需要设置界面的横竖屏显示时,可以在AndroidManifest.xml中,对Activity的属性添加以下代码 ...

最新文章

  1. 《机器学习实战》K邻近算法
  2. Python3中使用map()结果出错的解决方法
  3. zabbix服务器性能监控工具的安装一
  4. 牛顿插值多项式(python实现)
  5. 1.1 Java包装类、装箱和拆箱
  6. BootLoader引导程序制作及移植(一)
  7. 你有把依赖注入玩坏?
  8. broker可以禁用吗 time_Win8.1系统Runtime Broker是什么进程?可以禁用吗?
  9. Netbeans不能正常启动glassfish或者部署失败不能运行的问题
  10. Windows7下VS2008试用版到期的解决办法
  11. python lxml使用_使用lxml和Python进行Web抓取的简介
  12. 18个有用的 .htaccess 文件使用技巧
  13. centos是什么系统_解决更换操作系统后的开机问题
  14. PSi-Population Stability Index (PSI)模型分稳定性评估指标
  15. [oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
  16. python 异步爬取必应搜索结果
  17. strtok strtok_s strsep
  18. PCI - PCI概述
  19. 互联网大厂的黑话困局
  20. java replica set_kubernetes ReplicaSet的简单使用

热门文章

  1. 拍照时的正确姿势你掌握了吗?(下)
  2. 操作系统-逻辑地址转换为物理地址Java实现
  3. 微信小程序:wxml中写js语句的方法
  4. 计算机上的no是代表什么意思啊,电脑出现nosignal是什么意思
  5. 程序员的工资有多高?
  6. CentOS7和Ubuntu18.10下运行Qt Creator出现cannot find -lGL的问题的解决方案
  7. 纯净简洁绿色的解压缩软件
  8. python定量城市研究_Python定量城市研究实战
  9. loss 加权_样本生而不等——聊聊那些对训练数据加权的方法
  10. 用MATLAB实现高斯投影正反算且画出高斯投影图形