android - 如何在重新进入 Activity 时重新启动 CountDownTimer

标签 android countdowntimer

问:当用户再次进入我的 Activity 时,不知道如何重新启动 CountDownTimer(一个 CountDownTimer,它使用 SharedPreferences 从用户离开 Activity 时保留的最后几秒恢复过来)。我不知道将 ct.start() 放在哪里,以免出现 NullPointerException 错误。

答案/工作代码:(感谢 Calvin)

   ct=new CountDownTimer(86400000, 1000) { 

     public void onTick(long elapsed) {

        long timer2=elapsed;
        hours = timer2 / hours_in_millies;
        timer2 %= hours_in_millies;
        minutes = timer2 / minutes_in_millies;
        timer2 %= minutes_in_millies;                       
        seconds = timer2 / seconds_in_millies;

          if(hours>=10&&minutes>=10&&seconds>=10)
           time.setText(hours + ":" + minutes + ":" + seconds);
             else 
                 if (hours<10&&minutes>=10&&seconds>=10)
                 time.setText("0"+hours + ":" + minutes + ":" + seconds);            
                else 
                    if (hours<10&&minutes<10&&seconds>=10)
                    time.setText("0"+hours + ":0" + minutes + ":" + seconds);
                else 
                    if (hours<=10&&minutes<10&&seconds<10)
                    time.setText("0"+hours + ":0" + minutes + ":0" + seconds);
                else 
                    if(hours>=10&&minutes>=10&&seconds<10)
                         time.setText(hours + ":" + minutes + ":0" + seconds);
                else 
                        if (hours>=10&&minutes<10&&seconds<10)
                         time.setText(hours + ":0" + minutes + ":0" + seconds);
                        else 
                            if(hours>=10&&minutes<10&&seconds>=10)
                             time.setText(hours + ":0" + minutes+":" + seconds);
                            else if(hours<10&&minutes>=10 && seconds<10)
                                 time.setText("0"+hours + ":" + minutes +":0"+ seconds);    

     }

     public void onFinish() 

     { 
         time.setText("Ready!!");
         time.setTypeface(tf);
     }

  }.start();


}   
    public void onResume() { 
        super.onResume();  
         prefs = PreferenceManager.getDefaultSharedPreferences(this);
        xtime = System.currentTimeMillis()-prefs.getLong("time",System.currentTimeMillis());      

           timer=86400000-(xtime+prefs.getLong("time2",0)); 

           final SharedPreferences.Editor editor = prefs.edit();
           editor.putLong("time2",xtime+prefs.getLong("time2",0));  

           editor.commit(); 

        ct.start();
    }

    public void onStop() {
        super.onStop(); 

         xtime=System.currentTimeMillis(); 
         SharedPreferences.Editor editor2 = prefs.edit();
         editor2.putLong("time",xtime);         
         editor2.commit(); 
         ct.cancel();
    }

最佳答案

我的建议:

@Override
public void onResume() { // This will be trigger when your activity is created or come to front
    // Load preference
    // Start timer
}

@Override
public void onStop() { // This will be triggered when your activity goes behind or before your activity destroyed.
   // Cancel timer
   // Save preference
}

关于android - 如何在重新进入 Activity 时重新启动 CountDownTimer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740946/

相关文章:

php - 由 MySQL 数据决定的倒计时器

JavaScript 倒计时日期

java - 使用 HTTPUrlConnection 时如何保留 cookie?

javascript - 在倒计时/计时器中将时间格式化为分钟和秒

android - ToolbarAndroid 标志边框半径

android - 了解如何为 android/Iphone 之间的报价/答案 (webrtc) 生成正确的 sdp

java - 当 Activity 不是当前 Activity 时,如何告诉 MyCountDownTimer 退出?

android - 带有 countDownTimer 的 onFinish 方法问题的 listView

Android Studio - 构建变体未显示

java - fragment Activity 不膨胀