воскресенье, 6 марта 2011 г.

Бага с onUpdate в андроиде

В доке темным по светлому написано, что это событие вызывается, когда виджету пришло время обновится, но там же написано, что если у виджета есть активити настройки, то onUpdate НЕ вызывается и по завершению настройки надо обновить виджет (и там же написано, как)

Но несмотря на то, что написано в доке, на практике onUpdate вызывается всегда, сточка Log.d... в onUpdate виждета из экзамплов sdk доказывает, что это не я настолько криворукий. Бага в общем-то не смертельная, плохо только то, что если я решил не добавлять виджет - скажем в активити настроек нажму Home или Back, то он на экран не добавится, но onUpdate для него будут регулярно приходить.. Ну и тормоза ненужные, если для обновления надо хоть что-то ресурсоемкое/длинное сделать..

Масленницу сьели :), рабочее место на кухне есть :), так что я решил переделать свои виджеты с учетом этой баги (тем более что допустим завтра в апдейте андроида ее пофиксят - ну и что, все кинуться апдейтится?.. или пофиксят там скажем только в 2.3.9 какой-нибудь, не всем она светит

Короче идея простая (ну по крайней мере когда ее обдумывал): а) из описания виджета убираю строчку об активити настроек - так что настройки при добавлении виджета автоматически не появляются; б) в onUpdate для указанного виджета (по номеру) читаю настройки, в которые добавляю пункт скажем "настроен"; если не настроен - вызываю экран настроек, если добавляю виджет - записываю в "настроен" true; в) ну и при удалении на всякий пожарный записываю в "настроен" false

Т.е. получится, что я всегда добавляю виджет, мне показывается диалог настроек, а если я что-то там передумал - я нажму Home или Back, попаду на рабочий стол и удалю оттуда виджет обычным способом (и система вдуплится что он удаляется и больше не будет пытаться его обновлять

Вроде все просто, но я все ж тыркался сделать "как правильно", ну в доке ж написано, что должно быть так..

з.ы. фцк!! я ставил android sdk на винде (и не одной), на линуксе, на маке, отлаживал все в телефоне, а к ноуту вот подключаю телефон в режиме отладки - и ноут не может найти нужные драйверы блин..

негодуэ..

Комментариев нет:

Отправить комментарий