1
我有代碼的計時器,但如果我改變片段計時器被重置爲00:00我希望該計時器仍然計數後,我點擊停止或暫停或這意味着這個計時器仍然計數在後臺 如何做到這一點? 這是我的代碼,如何在後臺運行計時器?
public class TimerFragment extends BaseFragment {
private Button startButton;
private Button pauseButton;
private TextView timerValue;
private long startTime = 0L;
private Handler customHandler = new Handler();
long timeInMilliseconds = 0L;
long timeSwapBuff = 0L;
long updatedTime = 0L;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_timer, container, false);
initialize();
//when start
startTime = SystemClock.uptimeMillis();
customHandler.postDelayed(updateTimerThread, 0);
//pause
pauseButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
timeSwapBuff += timeInMilliseconds;
customHandler.removeCallbacks(updateTimerThread);
}
});
return rootView;
}
private Runnable updateTimerThread = new Runnable() {
public void run() {
timeInMilliseconds = SystemClock.uptimeMillis() - startTime;
updatedTime = timeSwapBuff + timeInMilliseconds;
int secs = (int) (updatedTime/1000);
int mins = secs/60;
secs = secs % 60;
timerValue.setText("" + mins + ":"
+ String.format("%02d", secs));
customHandler.postDelayed(this, 0);
}
};
謝謝你的好意
的Java郎空指針異常,當我打電話App.appInstance.startTimer( ); 對不起,我在android新手:( –
你必須申報清單中的應用程序名稱請參閱編輯參考 <應用程序 android:name =「<您的包名> .App」 –
這是一個很好的解決方案將邏輯移到應用程序範圍,如果他需要在片段中顯示時間的問題,因爲你需要訪問片段的ui。我認爲將startTimer()更改爲startTimer(Hanlder處理函數)並在片段中實現處理程序會更好 –