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处理函数)并在片段中实现处理程序会更好 –