在我正在工作的應用程序中,我需要有一個計時器來跟蹤從第一次登錄到滿足特定目標爲止的時間。對於計時器我一直在使用天文臺。Android天文臺總是重置爲00:00
我的問題是,如果用戶強制關閉應用程序從他們的後臺應用程序將重置計時器。我需要計時器來堅持和更新,即使應用程序被用戶強制關閉。
目前,我的代碼如下:
try{
FileInputStream fileIn = openFileInput(timerFilename);
InputStreamReader InputRead = new InputStreamReader(fileIn);
char[] timeInputBuffer = new char[HomeScreen.READ_BLOCK_SIZE];
t="";
int timeCharRead;
while((timeCharRead = InputRead.read(timeInputBuffer))> 0){
String readString = String.copyValueOf(timeInputBuffer, 0, timeCharRead);
t += readString;
}
InputRead.close();
} catch(Exception e){
e.printStackTrace();
}
if(t == null) {
try {
mChronometer.setBase(SystemClock.elapsedRealtime());
mChronometer.start();
FileOutputStream fileout = openFileOutput(timerFilename, MODE_PRIVATE);
OutputStreamWriter outputWriter = new OutputStreamWriter(fileout);
outputWriter.write(Long.toString(SystemClock.elapsedRealtime()));
outputWriter.close();
} catch (Exception e) {
e.printStackTrace();
}
}
else{
long currentTime = SystemClock.elapsedRealtime() - Long.parseLong(t);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
mChronometer.setBase(currentTime);
mChronometer.setText(sdf.format(new Date(currentTime)));
mChronometer.start();
}
我都略去了一些無關的代碼。
的主要問題是,供應currentTime
長mChronometer.setBase()
,然後調用mChronometer.start()
後計時器似乎是完全隨機的,不能啓動,我想它。
我從網上調查瞭解到,調用setBase()和start()仍然會導致定時器從00:00開始計數,但我的印象是調用mChronometer.setText()
應該解決這個問題,事實並非如此。
所以我的問題,即使應用程序被強行關閉,我如何保持計時器準時?
我已經嘗試通過服務但我仍然面對中計時器的復位,一旦應用程序是同樣的問題,以實現它強制關閉並重新打開。如有必要,我可以上傳更新的代碼片段 – Woooooooooooooow
請參閱我的編輯 –