Вопрос об Android-обработчике - PullRequest
0 голосов
/ 20 апреля 2011

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

      if (progress<=24)
           {

    contentView.setProgressBar(R.id.status_progress,24,progress,false);
    Toast.makeText(getApplicationContext(),progress, Toast.LENGTH_SHORT).show();
    progress++;
    mnNotificationManager.notify(IS_PARKED_ID, notification);
    mHandler.postDelayed(mUpdateTimeTaskProgressbar, 300000);

           }

вот код.Похоже, что когда экран устройства выключен, уведомление не обновляется.Я использовал Handlers в прошлом, но, насколько я помню, я обновлял их каждые 100 миллисекунд.Таким образом, мой вопрос, обработчик как-то приостановлен, остановлен и перезапущен, или это что-то еще.И есть ли у вас какие-то предложения, как wake_lock.Заранее спасибо, Симон
РЕДАКТИРОВАТЬ: Забыл упомянуть, что все это работает из службы

Ответы [ 2 ]

1 голос
/ 20 апреля 2011

Время от времени gc запускается для освобождения памяти на вашем устройстве. При запуске из потока пользовательского интерфейса программа обновления вашего уведомления также может быть собрана.

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

Связь между моей деятельностью и службой, которую я решил с помощью обработчиков, но для этого тоже есть множество методов.

0 голосов
/ 20 апреля 2011

По умолчанию обработчик запускается в том же процессе потока пользовательского интерфейса, поэтому я думаю, что вам лучше использовать сервис для обновления индикатора выполнения. В этом случае вы хотите обновлять пользовательский интерфейс каждые 5 минут. Для этого вы можете использовать AlarmManager, чтобы запустить службу сигнализации.

...