|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
Так как все-таки правильно обновлять какие-то данные на экране по периодическому событию? Например надо раз в минуту запрашивать из инета данные и обновлять цифры в приложении. Какие шаги надо для этого предпринять? Данные же на экране можно обновлять только из главного UI-треда, как я понял. Как это реализовать? Сделать сервис, который будет раз в минуту доставать из инета данные и при помощи Intent отправлять их в BroadcastReceiver, в котором и обновлять данные на экране? А как в сервисе реализовать задержку в 1 минуту? Там есть что-то наподобие Thread.sleep() или надо другой способ применять? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 17:35 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
а там нет обычного таймера? Код: java 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 17:49 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
данные реально раз в минуту обновляются? если нет, то push. а вообще у тебя слишком много вопросов в одном предложении. некие телодвижения в отдельном потоке с обновлением гуя? AsyncWorker. Сервис - точно ли он нужен, или обновлять нужно пока приложение открыто? Периодически? в андроидной jvm таймеры организуются так же как и в жабе. Поступающие данные интересны только твоему аппу? если да, то зачем Broadcast? p.s. надо определиться с архитектурой для начала. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 17:50 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
chpashaданные реально раз в минуту обновляются? если нет, то push. Да, обновляются раз в минуту. А что за push? а вообще у тебя слишком много вопросов в одном предложении. некие телодвижения в отдельном потоке с обновлением гуя? AsyncWorker. chpashaСервис - точно ли он нужен, или обновлять нужно пока приложение открыто? Периодически? Только пока приложение открыто, периодически, раз в минуту. Если сервис не нужен, то что взамен? chpashaПоступающие данные интересны только твоему аппу? если да, то зачем Broadcast? Да, интересны только моему. Если не броадкаст, то что взамен? Я видел в документации некий android.support.v4.content.LocalBroadcastManager, но у меня его нет в classpath'е. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 17:59 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
AYTereschenkoДа, обновляются раз в минуту. А что за push? push это когда сервер уведомляет тебя об изменениях, а не ты дергаешь его периодически. но если у тебя данные обновляются раз в минуту, то про пуш забыли, просто дергай сервер раз в минуту AYTereschenkoТолько пока приложение открыто, периодически, раз в минуту. Если сервис не нужен, то что взамен? имхо достаточно фонового потока. стартуем по таймеру AsyncWorker, когда он возвращает результат - обновляем данные. в той вьюхе где это нужно. можно в отдельный класс и подписаться во вьюхе на событие обновления данных. последний вариант аккуратней, чем все в представление пихать. сервис имеет смысл, если надо делать что-то в фоне даже если апп закрыт (например аплоад файла и т.п.). AYTereschenkoДа, интересны только моему. Если не броадкаст, то что взамен? читай про How do I pass data between Activities/Services within a single application? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 18:57 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
chpasha, Ну вроде все понятно, кроме одного: как "подписаться во вьюхе на событие обновления данных"? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.12.2011, 19:55 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
Если service не устраивает, посмотри в сторону AsyncTask, через него можно обновлять UI. Хотя imho service гибче,т.к. если не требуется сегодня,может завтра понадобится. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 02:03 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
AYTereschenkochpasha, Ну вроде все понятно, кроме одного: как "подписаться во вьюхе на событие обновления данных"? паттерн листенер (observer), он ведь в апи андроида повсюду ;) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 13:04 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
chpasha, А, ну я думал, что должны быть какие-то встроенные средства для безопасного апдейта UI из фоновых потоков. Нашел Handler#sendMessage(). По-моему это оно самое. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.12.2011, 19:05 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
AYTereschenkoА, ну я думал, что должны быть какие-то встроенные средства для безопасного апдейта UI из фоновых потоков. Нашел Handler#sendMessage(). По-моему это оно самое. Как я уже писал выше AsyncTask-это как раз то, что вы хотите , а именно "встроенные средства для безопасного апдейта UI из фоновых потоков". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2011, 12:59 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
TrogloditAYTereschenkoА, ну я думал, что должны быть какие-то встроенные средства для безопасного апдейта UI из фоновых потоков. Нашел Handler#sendMessage(). По-моему это оно самое. Как я уже писал выше AsyncTask-это как раз то, что вы хотите , а именно "встроенные средства для безопасного апдейта UI из фоновых потоков". В документации к AsyncTask сказано, что создавать и выполнять его можно только из UI-потока. А мне же нужно из фонового потока задачу выполнять, по таймеру. Использовать для этого Activity.runOnUiThread(Runnable)? Как-то сложно получается. Целая матрешка из потоков/вызовов ради одного действия. А как бы вы решили эту задачу? Нужно раз в минуту забирать данные из инета и обновлять их на экране в конкретном View. Какие классы бы вы использовали и кто кого бы там вызывал? Кстати, если есть данные, которые нужны только моему приложению и которые нужно сохранить, чтобы они были доступны при следующем запуске приложения, что лучше использовать для хранения этих данных: sqlite, файлы, что-то еще? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2011, 13:04 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
Запустите его из UI-потока, а вот что написать в doInBackground-это уже другое дело, более того никто не говорить что AsyncTask должен тут же закрыться. Реализуйте срабатывание по таймеру в doInBackground и все будет так, как вы хотели. Советую глянуть доку по AsyncTask, там все замечательно написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2011, 13:53 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
решение влоб: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34.
запускаем работника в onResume, останавливаем в onPause ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 15:41 |
|
Android. Обновление Activity по таймеру
|
|||
---|---|---|---|
#18+
делай такие вещи в Локал Сервис. Крути себе Тред по таймауту. С помощью Бродкаста отсылай данные которые изменились. sqlite не поможет если данные будут в виде Объектов. И в новой версии к объекту добавили новое поле. простые типы данных можно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2011, 16:08 |
|
|
start [/forum/topic.php?fid=13&fpage=30&tid=1331826]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 293ms |
total: | 428ms |
0 / 0 |