В доке темным по светлому написано, что это событие вызывается, когда виджету пришло время обновится, но там же написано, что если у виджета есть активити настройки, то onUpdate НЕ вызывается и по завершению настройки надо обновить виджет (и там же написано, как)
Но несмотря на то, что написано в доке, на практике onUpdate вызывается всегда, сточка Log.d... в onUpdate виждета из экзамплов sdk доказывает, что это не я настолько криворукий. Бага в общем-то не смертельная, плохо только то, что если я решил не добавлять виджет - скажем в активити настроек нажму Home или Back, то он на экран не добавится, но onUpdate для него будут регулярно приходить.. Ну и тормоза ненужные, если для обновления надо хоть что-то ресурсоемкое/длинное сделать..
Масленницу сьели :), рабочее место на кухне есть :), так что я решил переделать свои виджеты с учетом этой баги (тем более что допустим завтра в апдейте андроида ее пофиксят - ну и что, все кинуться апдейтится?.. или пофиксят там скажем только в 2.3.9 какой-нибудь, не всем она светит
Короче идея простая (ну по крайней мере когда ее обдумывал): а) из описания виджета убираю строчку об активити настроек - так что настройки при добавлении виджета автоматически не появляются; б) в onUpdate для указанного виджета (по номеру) читаю настройки, в которые добавляю пункт скажем "настроен"; если не настроен - вызываю экран настроек, если добавляю виджет - записываю в "настроен" true; в) ну и при удалении на всякий пожарный записываю в "настроен" false
Т.е. получится, что я всегда добавляю виджет, мне показывается диалог настроек, а если я что-то там передумал - я нажму Home или Back, попаду на рабочий стол и удалю оттуда виджет обычным способом (и система вдуплится что он удаляется и больше не будет пытаться его обновлять
Вроде все просто, но я все ж тыркался сделать "как правильно", ну в доке ж написано, что должно быть так..
з.ы. фцк!! я ставил android sdk на винде (и не одной), на линуксе, на маке, отлаживал все в телефоне, а к ноуту вот подключаю телефон в режиме отладки - и ноут не может найти нужные драйверы блин..
негодуэ..
Комментариев нет:
Отправить комментарий