2012-03-09 3 views
1

В моем приложении меня попросили добавить функцию автоматического обновления. То, что я пытаюсь сделать, это иметь событие таймера, чтобы, если пользователь не нажал кнопку обновления за последние 60 секунд, сделайте «refreshButton.performClick();».Программируемая кнопка «нажатие» каждые 60 секунд

Я искал stackoverflow (и googling), но не могу найти пример, где таймер взаимодействует с пользовательским интерфейсом. Я продолжаю получать ошибки, как «только исходный поток, создавший иерархию представлений».

Если пользователь нажмет кнопку, я хочу сбросить таймер.

Возможно ли это?

ТИА

+0

вставьте существующий код, чтобы мы могли помочь вам его изменить или расширить. – waqaslam

ответ

3

Вы только можете взаимодействовать с AView из потока пользовательского интерфейса.

Вы можете сделать что-то подобное в задаче таймера;

  • Определите эту переменную в классе:

    Handler handler = new Handler();

  • в вызове задачи таймера:

    handler.post(new Runnable(){ 
         public void run(){ 
          refreshButton.performClick(); 
         } 
        }); 
    
+0

Или даже лучше, вызовите 'handler.postDelayed (runnable, 60000);'. Чтобы полностью избежать таймера. – Jave

0

Вы можете использовать класс AlaramManager и фоновую службу, чтобы запустить свой код на каждых 60 секунд.

Here пример см AlarmService_Service.java

+0

Это приведет к тому, что обновление произойдет, даже если приложение было завершено. Ответ sgallegos лучше и проще реализовать. «Диспетчер аварийных сигналов предназначен для случаев, когда вы хотите, чтобы ваш код приложения выполнялся в определенное время, даже если ваше приложение в настоящее время не работает» – Jave

+0

вы можете просто отключить сервис alaram в методе onDestroy вашей деятельности. – Sunny

+0

@ Jave вы правы sgallegos метод лучше и легко реализовать. – Sunny

2

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

+0

Хм, это хороший момент, но теперь у меня это работает – user1174838

Смежные вопросы