Страницы

Поиск по вопросам

среда, 4 марта 2020 г.

Остановить Timer в fragment при закрытии приложения

#java #android


Есть приложение с Viewpager. Когда приложение запущено, в одном из фрагментов специально
постоянно идёт таймер.

При закрытии приложения выпадает такая ошибка:

E/AndroidRuntime: FATAL EXCEPTION: Timer-0
                 Process: com.example.administrator.myapp, PID: 6571
                 java.lang.NullPointerException: Attempt to invoke virtual method
'void android.support.v4.app.FragmentActivity.runOnUiThread(java.lang.Runnable)' on
a null object reference
                 at com.example.administrator.myapp.MyFragment$myTimerTask.run(MyFragment.java:228)
                 at java.util.Timer$TimerImpl.run(Timer.java:284)


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

Для закрытия приложения в MainActivity использую код:

@Override
    public void onPause() {
        finish();
        super.onPause();
    }


Что нужно дописать, чтобы при закрытии приложения таймер в fragment  останавливался
или сам фрагмент закрывался?


  Нижеприведённый код вставленный в fragment не подходит, так как: 1)
  всё равно вылетает ошибка; 2) при пролистывании фрагментов таймер
  останавливается, а нужно чтобы работал, когда приложение запущено.

@Override
        public void onPause() {
            getActivity().finish();
            super.onPause();
        }


    


Ответы

Ответ 1



Нужно останавливать таймер в методе onDestroy() активити timer.cancel();

Комментариев нет:

Отправить комментарий