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 сердец.
Для онлайн-времени вы можете легко использовать таймер обратного отсчета в фоновом режиме.
Надеюсь, это поможет вам.