原来在android写的心跳包,用的是java下的Timer实现的,后来发现,在usb线断开的时候,屏幕关闭的话,Timer就会失效.
网上说要用Android下的Alarm,但是感觉实现不了
网上说要用Android下的Alarm,但是感觉实现不了
/******** 心跳包部分 *************/ // 启动心跳包 public void createHeardbeatConnection(Socket socket, Context ctx, boolean isRun) { AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE); Intent intent = new Intent(this, AlarmCaller.class); intent.putExtra("socket", socket); PendingIntent sender = PendingIntent.getBroadcast(this, AlarmManager.RTC_WAKEUP, intent, 0); am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, System.currentTimeMillis(), 5*1000, sender); //原来用java下的Timer实现的,但是屏幕关闭了会停掉 timer = new Timer(); timer.schedule(new HeardBeatTask(socket,ctx,isRun), new Date(),Protocol.HEART_BEAT_TEST_TIME * 60 * 1000); } 问题: 功能是写在一个Service里的,PendingIntent要启动另一个Service?那么当前的socket怎样传递过去呢? 或有其它方式实现? ps. 还有个问题,想让本人的apk动态生成,生成的每一个apk都有本人的一些配置信息,通过java app生成,像exe那种,他们好像是直接把要改的内容写成特定格式,例如aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,然后读这个文件,查找替换,可是apk这种方法实现不了,问一下,该怎样实现相似功能呢?
解决方案:10分
不插USB,屏幕灭了系统会睡的。
你试下在alarmManager通知后先拿个wakelock
你试下在alarmManager通知后先拿个wakelock
解决方案:20分
这边屏幕关掉后短时间内能正常收发数据,但时间一长就不行了
看了昨晚的log,ScheduledExcutorService在长时间待机后也不行。在4-5小时内1次都没执行
这里还有一个alarm版本的,这个在长时间待机后是能继续稳定执行。但用了alarm问题就和你一样了,alarm和socket配合起来比较麻烦
这边屏幕关掉后短时间内能正常收发数据,但时间一长就不行了
看了昨晚的log,ScheduledExcutorService在长时间待机后也不行。在4-5小时内1次都没执行
这里还有一个alarm版本的,这个在长时间待机后是能继续稳定执行。但用了alarm问题就和你一样了,alarm和socket配合起来比较麻烦