我有一个60秒的倒数计时器。当用户离开应用程序时,我希望秒数能继续。我尝试了很多次但都失败了。进入应用程序后,此计时器将开始倒计时。例如,当我在20秒后进入应用程序时,计时器将在40秒后继续计时 这是我的密码
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
sp5 = PreferenceManager.getDefaultSharedPreferences(this);
xtime=System.currentTimeMillis()-
sp5.getLong("TIME",System.currentTimeMillis());
long timer5=mTimeLeftinMilis5-xtime;
final SharedPreferences.Editor editor = sp5.edit();
editor.putLong("TIME",timer5);
editor.commit();
}
public void StartTimer5(){
mCountDownTimer5=new CountDownTimer(mTimeLeftinMilis5,1000) {
@Override
public void onTick(long l5) {
mTimeLeftinMilis5=l5;
updateCountDownText5();
}
@Override
public void onFinish() {
mTimerRunning5=false;
btn_kalp5.setBackgroundResource(R.drawable.kalp);
cankontrol--;
tv_countdown5.setVisibility(View.GONE);
}
}.start();
mTimerRunning5=true;
xtime=System.currentTimeMillis();
SharedPreferences.Editor editor2 = sp5.edit();
editor2.putLong("TIME",xtime);
editor2.commit();
}
答案 0 :(得分:0)
package com.besli.timer;
import android.content.SharedPreferences;
import android.os.CountDownTimer;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
CountDownTimer timer;
int globalTime = 60;
TextView timeText;
SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
timeText = findViewById(R.id.timeTextGlobal);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
if(sharedPreferences.getInt("Time",0) != 0){
globalTime = sharedPreferences.getInt("Time",0);
}
timer = new CountDownTimer(globalTime * 1000,1000) {
@Override
public void onTick(long l) {
globalTime -= 1;
timeText.setText(String.valueOf(globalTime));
}
@Override
public void onFinish() {
globalTime = 60;
}
}.start();
}
@Override
protected void onStop() {
super.onStop();
sharedPreferences.edit().putInt("Time",globalTime).apply();
}
}
这不是一个明确的解决方案。但是您可以检查onStop()。当用户尝试退出应用程序时,我得到了剩余时间并将其保存到缓存中。然后进行第二次跑步,我得到了剩余时间,然后再次开始倒计时。
您可以保存用户退出时的当前时间,以及当用户下次打开您的应用程序时,可以计算出时间差。如果相差300秒;你可以再给5个心。
对于在线时间,您可以在后台轻松使用countdowntimer。
希望对您有帮助。