Использование onPause()/onResume() для приостановки/возобновления таймера мини-игры?

Так вот ситуация. Я работаю над мини-игрой для Android, и в этой игре есть таймер, который ведет обратный отсчет от 60 до 0.

http://postimg.org/image/5kcbo7t49/

Когда вы нажимаете кнопку паузы (II), отображается диалоговое окно, которое служит паузой, таймер должен остановиться и, конечно, когда вы нажимаете кнопку «Продолжить», он должен продолжаться.

http://postimg.org/image/j2j80i59l/

Моя проблема в том, что таймер продолжает работать, даже когда всплывает диалоговое окно, я думал, что могу остановить таймер в методе onPause(), но я прочитал, что диалоги не вызывают метод onPause, потому что они не обязательно являются действиями. Итак, мой вопрос: что я могу использовать, чтобы моя активность вызывала onPause() и onResume()? Должен ли я использовать что-то отличное от диалогов? если да, то что я мог бы использовать? Или я могу каким-то образом активировать onPause/OnResume, и это удобно?

Вот код:

Код кнопки паузы. Просто вызывает диалог паузы.

_Btn_Pause.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                GameManager.createDialogPause(_Activity, _Activity);
            }
        });

Код методов паузы и возобновления.

protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
        _C.cancel();
        _TimeReady = 4;
        _StartGame = false;
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
        setGame();
    }
public void setGame() {
    _C.scheduleAtFixedRate(_GameTimer, 1000, 1000);
}

person Betun Herrera Alanis    schedule 14.12.2014    source источник


Ответы (1)


Поскольку вы передаете контекст действия в диалоговое окно, вы можете использовать его, чтобы получить свое действие и вызвать метод для остановки/возобновления таймера.

YourActivityName activity = (YourActivityName) _Activity;
activity.pause_timer()  //Or call onPause() onResume()
person MarcSB    schedule 14.12.2014