new Timer().schedule(new TimerTask() {@Overridepublic void run() {// TODO Auto-generated method stubLog.i("aaa", "hello");TelephonyManager tm = (TelephonyManager)getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);deviceid = tm.getDeviceId();username = SysUtil.loginname;SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");SimpleDateFormat stimeFormat = new SimpleDateFormat("HH:mm:ss");date = sDateFormat.format(new java.util.Date());time = stimeFormat.format(new java.util.Date());//發(fā)送message = username + ","+ deviceid + ","+ date + ","+ time + ","+ preferences.getString("longtitude", "fail") + ","+ preferences.getString("latitude", "fail") + ","+ preferences.getString("accelerator", "fail,fail,fail") + ","+ preferences.getString("magnetic", "fail,fail,fail") + ","+ preferences.getString("pressure", "0") + ","+ preferences.getString("light", "0") + ","+ preferences.getString("wifi", "fail,fail,fail");try {String s = SysUtil.client.sendMessage(message);if(s.equals("fail")){editor.putString("last" + SysUtil.cur++, message);editor.commit();}if(s.equals("login")){SysUtil.pushlogin(getApplicationContext());editor.putString("last" + SysUtil.cur++, message);editor.commit();}if(s.equals("success")){SysUtil.cur--;for(; SysUtil.cur > 0; SysUtil.cur--){preferences.getString("last" + SysUtil.cur, message);s = SysUtil.client.sendMessage(message);if(!s.equals("success"))break;}}} catch (Exception e) {// TODO Auto-generated catch blockeditor.putString("last" + SysUtil.cur++, message);editor.commit();}}}, 0, SysUtil.frequncy * 300);}目前我是用Timer來(lái)實(shí)現(xiàn)每隔一段時(shí)間執(zhí)行一次run()里面的程序但是后來(lái)功能需要,發(fā)現(xiàn)要?jiǎng)討B(tài)的改變間隔時(shí)間,這一點(diǎn)上timer好像不能實(shí)現(xiàn)。后來(lái)改成了while(true)循環(huán)里面加Thread.sleep(/*間隔時(shí)間*/),try/catch異常
2 回答

瀟瀟雨雨
TA貢獻(xiàn)1833條經(jīng)驗(yàn) 獲得超4個(gè)贊
我覺得吧
你暫停的時(shí)候應(yīng)該吧TIMER.CANCEL()掉,也就是退出TIMER,等恢復(fù)的時(shí)候再重新調(diào)用TIMER
如果時(shí)間是變動(dòng)的,那么你就不要用TIMER,自己NEW 一個(gè)THREAD然后在THREAD里設(shè)置一個(gè)標(biāo)志變量,可以再外面訪問的,用它來(lái)控制線程的退出,里面再調(diào)用this.sleep(),
不能再主線程里直接SLEEP,那樣程序會(huì)全停掉

慕田峪9158850
TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
像這類定時(shí)的工作android上建議使用AlarmManager,里面可以完成timer的所有功能,而且更簡(jiǎn)單
添加回答
舉報(bào)
0/150
提交
取消