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