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());//發送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來實現每隔一段時間執行一次run()里面的程序但是后來功能需要,發現要動態的改變間隔時間,這一點上timer好像不能實現。后來改成了while(true)循環里面加Thread.sleep(/*間隔時間*/),try/catch異常
2 回答

瀟瀟雨雨
TA貢獻1833條經驗 獲得超4個贊
我覺得吧
你暫停的時候應該吧TIMER.CANCEL()掉,也就是退出TIMER,等恢復的時候再重新調用TIMER
如果時間是變動的,那么你就不要用TIMER,自己NEW 一個THREAD然后在THREAD里設置一個標志變量,可以再外面訪問的,用它來控制線程的退出,里面再調用this.sleep(),
不能再主線程里直接SLEEP,那樣程序會全停掉
添加回答
舉報
0/150
提交
取消