1
在我的應用程序中,我使用處理程序來更新日期和時間。它更新日期&時間,但沒有給出準確的結果。就像我設置爲在60秒後更新一樣,它會在62秒後更新。如果我更新到120秒,它會在2分2秒後更新。 請幫助我爲什麼它說更多的時間? 我的代碼是處理程序沒有給出確切的時間間隔
public static String interval = "60";
Handler h2 = new Handler();
Runnable run = new Runnable() {
@Override
public void run() {
MyLocation loc = new MyLocation(getBaseContext());
TextView longitude_view = (TextView) findViewById(R.id.GPS_Long_txta);
((TextView) longitude_view)
.setText(" " + String.valueOf(loc.gps_lon));
TextView latitude_view = (TextView) findViewById(R.id.GPS_Lat_txta);
((TextView) latitude_view).setText(" " + String.valueOf(loc.gps_lat));
long delaytime = (RestoreRecord0()*1000);
last_update_time_txtbx = (TextView) findViewById(R.id.last_update_time_txt);
last_update_time_txtbx.setText(" "
+ String.valueOf(java.text.DateFormat.getDateTimeInstance()
.format(Calendar.getInstance().getTime())));
tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String response = CallWebService(tm.getDeviceId(), loc.gps_lon, loc.gps_lat);
h2.postDelayed(this, delaytime);
}
};
這裏有一個方法RestoreRecord0
public int RestoreRecord0() {
try {
File dir = getFilesDir();
File file = new File(dir, Saveinterval);
if (!file.exists()) {
return Integer.parseInt(interval);
}
FileInputStream fileIS = new FileInputStream(file);
BufferedReader buf = new BufferedReader(new InputStreamReader(
fileIS));
String readString = new String();
String data = "";
// just reading each line and pass it on the debugger
while ((readString = buf.readLine()) != null) {
data += readString;
}
return Integer.parseInt(data);
}
catch (Exception ex) {
ex.getMessage();
}
return Integer.parseInt(interval);
}
請幫助。如何以規則和準確的時間間隔更新時間?
什麼是'RestoreRecord0()'的價值?你是否計算了Runnable需要多長時間才能完成?最後,你有沒有嘗試'postAtTime()'去除任何延遲? RestoreRecord0()中的 – Sam
我保存用戶設置的間隔值。 – Mickel
其中我使用postAtTime()。之後h2.postDelayed(this,delaytime)????? – Mickel