androidpn-client重要BUG-锁屏掉线解决方法
2013-08-09 15:20
459 查看
在网上androidpn上的BUG基本都解决了,也多亏牛人们顶力相助,灰常感谢啊。在这里要说的问题是手机锁屏后,客户端心跳包不再发送了。由于android也接触不是很久,对一些系统的机制不太了解,经过多次测试与分析,才发现了是由于锁屏后CPU处于睡眠状态,线程都被挂起,所以在服务器端设定的闲置时间内收不到心跳包,强制移除用户下线。
OK问题已经找到了就好办多了,既然是被挂起了我们就只有让心跳一直在跑了,不啰嗦了。既而在网上有找到两种方法,第一种是让系统不睡眠,第二种则是使用AlarmManager来做我们的操作,在这里我是用的第二种方案来解决我们的问题的。但这样可能有点费电,暂时只能这样解决了了,不知道大家有木有更好点的解决办法能说出来大家一起研究研究。
1).
[java]
view plaincopyprint?
//申请设备电源锁
public void acquireWakeLock()
{
if (null == mWakeLock)
{
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"NotificationService");
if (null != mWakeLock)
{
mWakeLock.acquire();
}
}
}
//释放设备电源锁
public void releaseWakeLock()
{
if (null != mWakeLock)
{
mWakeLock.release();
mWakeLock = null;
}
}
注意在manifest加权限<uses-permission android:name="android.permission.WAKE_LOCK" />
2).
[java]
view plaincopyprint?
public void registerAlarmManager(){
am = (AlarmManager)getSystemService(ALARM_SERVICE);
pi = PendingIntent.getBroadcast(this,
0, new Intent(this, HeartActionBroadCast.class), Intent.FLAG_ACTIVITY_NEW_TASK);
long now = System.currentTimeMillis();
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, now,
20000, pi);
}
OK问题已经找到了就好办多了,既然是被挂起了我们就只有让心跳一直在跑了,不啰嗦了。既而在网上有找到两种方法,第一种是让系统不睡眠,第二种则是使用AlarmManager来做我们的操作,在这里我是用的第二种方案来解决我们的问题的。但这样可能有点费电,暂时只能这样解决了了,不知道大家有木有更好点的解决办法能说出来大家一起研究研究。
1).
[java]
view plaincopyprint?
//申请设备电源锁
public void acquireWakeLock()
{
if (null == mWakeLock)
{
PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"NotificationService");
if (null != mWakeLock)
{
mWakeLock.acquire();
}
}
}
//释放设备电源锁
public void releaseWakeLock()
{
if (null != mWakeLock)
{
mWakeLock.release();
mWakeLock = null;
}
}
//申请设备电源锁 public void acquireWakeLock() { if (null == mWakeLock) { PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "NotificationService"); if (null != mWakeLock) { mWakeLock.acquire(); } } } //释放设备电源锁 public void releaseWakeLock() { if (null != mWakeLock) { mWakeLock.release(); mWakeLock = null; } }
注意在manifest加权限<uses-permission android:name="android.permission.WAKE_LOCK" />
2).
[java]
view plaincopyprint?
public void registerAlarmManager(){
am = (AlarmManager)getSystemService(ALARM_SERVICE);
pi = PendingIntent.getBroadcast(this,
0, new Intent(this, HeartActionBroadCast.class), Intent.FLAG_ACTIVITY_NEW_TASK);
long now = System.currentTimeMillis();
am.setInexactRepeating(AlarmManager.RTC_WAKEUP, now,
20000, pi);
}
相关文章推荐
- androidpn-client重要BUG-锁屏掉线解决方法
- [androidpn客户端] androidpn-client 常见BUG解决方法
- androidpn-client 常见BUG解决方法
- 关于“android4.0中,在通话界面进入锁屏界面后出现两个电话图标”这一Bug的解决方法
- java中用httpClient请求service时bug解决方法(httpGet)
- android中httpclient和HttpURLConnection优缺点和常见bug解决方法
- [cocos2d-x·解Bug]关于cocos2d-x游戏在android锁屏状态下播放Bgm的解决方法
- [cocos2d-x·解Bug]关于cocos2d-x游戏在android锁屏状态下播放Bgm的解决方法
- java中用httpClient请求service时bug解决方法(httpGet)
- androidpn-client 常见BUG解决方法
- System.Data.OracleClient 需要 Oracle 客户端软件 8.1.7 或更高版本 bug解决方法
- Silverlight 2 : 关于ListBox的一个Layout Bug及其解决方法
- 项目总结---- imageLoder 的2个Bug解决方法、1.9.4如何选择性删除disk缓存和其它一些错误。
- SSH Secure Shell Client中文乱码的解决方法
- IE6中用了float:left之后导致margin-left双倍边距的BUG解决方法
- 转载 Android遇到内存溢出(Out Of Memory)BUG的经验与解决方法
- 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法
- DWR帮助说明-dwr的bug及其解决方法
- zend db 多表查询 LIMIT BUG 解决方法
- 高版本内核系统(Ubuntu12.04)下编译低版本内核(2.6.30)bug解决方法