обновить пользовательский интерфейс MapView из сервиса - PullRequest
0 голосов
/ 09 января 2012

У меня есть сервис и mapActivity.Я хочу обновить mapview вне serivce (рисовать новые oerlays, скажем, каждые 15 сек.) Я получаю ошибку: не могу создать обработчик внутри потока, который не вызвал looper.prepare ();

мой код:

private void startService() { 

     timer.scheduleAtFixedRate( new TimerTask() { 

    public void run() { 
    MyMap map = new MyMap(); // here is where app crashes...}

}    
}

1 Ответ

0 голосов
/ 09 января 2012

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

Если вы бездельничаете и думаете об этом, архитектурно, нет причин иметь код пользовательского интерфейса в фоновом сервисе.Рисование карты является чисто передним планом и перестает иметь значение, как только действие карты прекращается.Следовательно, нет необходимости иметь фоновый код в сервисе - весь оверлейный код принадлежит активности карты переднего плана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...