Как реализовать тайм-аут на кнопке?

153
07 ноября 2019, 21:40

Я хочу поставить на кнопку что-то вроде таймера, то есть у меня есть кнопка, после нажатия она становится неактивной, скажем, на 2 часа, через два часа она снова активируется, но таймер продолжает отсчитывать время, даже если Приложение закрыто или свернуто. Как сделать кнопку неактивной, я знаю, поможет понять, как сделать таймер.

Я написал код так, чтобы, когда я нажимал кнопку, она записывала дату и деактивировала кнопку, а после этого она получала новую дату и находила разницу, а когда она составляла 10 секунд, она снова активировала кнопку, но код не работает, объясните почему?

public class MainActivity extends AppCompatActivity {
    Button button;
    TextView textView;
    private String TAG;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = findViewById(R.id.button);
        textView = findViewById(R.id.textView);
        final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);


        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                button.setEnabled(false);
                SharedPreferences.Editor editor = preferences.edit();
                long startTime = System.currentTimeMillis();
                editor.putLong("Time", startTime);
                editor.apply();
                Log.d(TAG, "Time " + startTime);
            }
        });
        long startMillis = preferences.getLong("Time", 0);
        long now = System.currentTimeMillis();
        Log.d(TAG, "Now " + now);
        long difference = now - startMillis;
        if (difference == 10000) {
            button.setEnabled(true);
        }
        Log.i(TAG, "Time111: " + difference);
    }
    @Override
    protected void onStart() {
        super.onStart();
    }
}
READ ALSO
Парсинг ассоциативных массивов json java

Парсинг ассоциативных массивов json java

Мне нужно спарсить данные в следующие классыЯ раньше не сталкивался с JSON

111
RecyclerView многосоставной

RecyclerView многосоставной

Нужно реализовать RecyclerView в котором должен быть заголовок и под ним список который зависит от данных БДПо началу сделал несколько RecyclerView...

107
Не могу сделать перенос строки в string

Не могу сделать перенос строки в string

Если срабатывает if, то идет обращение к базе данных и от туда выводим столбец "team_name", записывается он в строковую переменную "resultat" и выводится...

122
FXML загрузчик не видит мой класс

FXML загрузчик не видит мой класс

Создал класс FanStackPane, который наследуется от обычного StackPane, для того что бы расставить элементы как я хочуНо теперь при старте программы вылетает...

120