Каксоздать таймер на кнопку и сохранить его в sharedpreferences?

Как можно сохранить данные о том, что человек нажал на кнопку и запустился таймер, но так, что бы после перезапуска приложения таймер не сбрасывался Вот сам код кнопки таймера, а как сохранить значения?

 btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btn.setEnabled(false);

     new Handler().postDelayed(new Runnable() {

        @Override
        public void run() {
                btn.setEnabled(true);

        }
    },20000);

    }
});

Ответы (1 шт):

Автор решения: Vind Iskald
public class FirstFragment extends Fragment {

    private FragmentFirstBinding binding;
    SharedPreferences mShPrefs = null;
    private final Handler mHandler = new Handler();
    private int time = 0;
    private final int timeLimit = 20;
    private Boolean isActive = false;
    private final Runnable countdownTask = new Runnable() {
        @Override
        public void run() {
            if (time <= 0) {
                isActive = false;
                setButtonEnabled(true);
            } else {
                time--;
                mHandler.postDelayed(this, 1000);
            }
        }
    };

    @Override
    public View onCreateView(
            LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState
    ) {
        binding = FragmentFirstBinding.inflate(inflater, container, false);
        return binding.getRoot();
    }

    public void onViewCreated(@NonNull View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        binding.buttonFirst.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (!isActive) {
                    startTimer();
                }
            }
        });
    }

    @Override
    public void onResume() {
        super.onResume();
        mShPrefs = requireContext().getSharedPreferences("prefs", Context.MODE_PRIVATE);
        time = mShPrefs.getInt("time", 0);
        SharedPreferences.Editor editor = mShPrefs.edit();
        editor.clear().apply();
        if (time > 0) startTimer();
    }

    private void startTimer() {
        time = timeLimit;
        setButtonEnabled(false);
        mHandler.postDelayed(countdownTask, 1000);
    }

    private void setButtonEnabled(Boolean isEnabled) {
        binding.buttonFirst.setEnabled(isEnabled);
    }

    @Override
    public void onStop() {
        mHandler.removeCallbacks(countdownTask);
        if (time > 0) {
            SharedPreferences.Editor editor = mShPrefs.edit();
            editor.putInt("time", time).apply();
        }
        super.onStop();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        binding = null;
    }

}
→ Ссылка