亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如下,發現應用好像陷入了死循環,程序總是無響應無響應的。 求大神指點!

如下,發現應用好像陷入了死循環,程序總是無響應無響應的。 求大神指點!

絕地無雙 2022-05-18 12:15:47
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,那樣程序會全停掉

查看完整回答
反對 回復 2022-05-23
?
慕田峪9158850

TA貢獻1794條經驗 獲得超7個贊

像這類定時的工作android上建議使用AlarmManager,里面可以完成timer的所有功能,而且更簡單

查看完整回答
反對 回復 2022-05-23
  • 2 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號