Android 休眠导致的问题Socket断开
来源:互联网 发布:淘宝网棒球帽 编辑:程序博客网 时间:2024/04/28 19:06
开发过程中,发现手机锁屏/休眠会导致通信有问题。调试后发现是socket断开了,这是与wifi有关系,而wifi的问题又与手机休眠有关。
1.可以手动设置
设置——无线和网络——WLAN——高级设定——睡眠期间保持WLAN开启——总是
然而,并不是所以有手机都有这个设置,因为有些系统被开发商定制(阄割)了。
2.代码设置
- public void setWifiDormancy(Context context){
- int value = Settings.System.getInt(context.getContentResolver(), Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
- Log.d(TAG, "setWifiDormancy() returned: " + value);
- final SharedPreferences 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);
- }
- }
- //恢复
- public void restoreWifiDormancy(Context context){
- final SharedPreferences prefs = context.getSharedPreferences("wifi_sleep_policy", Context.MODE_PRIVATE);
- int defaultPolicy = 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使用。
- PowerManager pm = (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
0 0
- Android 休眠导致的问题Socket断开
- Android 休眠导致的问题Socket断开
- Android系统休眠导致的严重问题
- Andorid编程心得-利用代码解决Android WIFI休眠后连接断开的问题
- 关于mysql_query导致连接断开的问题
- 关于判断Socket断开的问题
- android 传感器休眠的问题
- 关于Android 的Socket请求导致应用卡的问题
- 由防火墙导致的数据库空闲连接断开问题
- 问题:解决Android中socket自动断开连接
- Android开发心得-系统休眠时WIFI连接断开的解决办法
- C# socket连接断开问题
- linux socket tcp server 解决客户端socket断开后, 服务器端进程退出的问题
- ssh断开的问题
- 关于C#Socket断开重连问题
- Linux休眠的问题
- 单个adoconnection 因网络不稳定导致的物理连接断开问题
- 解决bootstrap switch 开关OFF被断开导致排版混乱的问题
- 在oracle下触发器实现主键自增
- Sublime Text 3 编译运行 OpenCV2.4.13
- 传统Socket编程传递POJO(使用Java自带的序列化方式)
- java并发编程之线程管理
- Android路上的一些感慨和总结,慢慢来,比较快!
- Android 休眠导致的问题Socket断开
- Android之---个人中心里边的头像的设置、本地保存和传服务器
- Spring MVC SessionAttribute学习
- Unity性能优化之内存篇(上)
- 摄像机震荡效果
- opnet之变量类型
- 导航栏之自定义按钮
- Django ReconnectingWebSocket 使用
- 微信小程序wx:if条件渲染