Как обновить настройки виджета из PreferenceActivity в AndroidУ меня появилось стойкое ощущение того, что блог поймал позитивную волну прироста показателей и уже имеющиеся материалы на сайте пользуются интересом у пользователя. Дабы разнообразить блог, сегодня оповещаю об открытии новой категории “Android“. Я долго думал, о чем можно написать про эту очень распространенную ОС, когда есть столько официальной документации, огромное множество переводов на Хабре этой же документации, форумов еще больше, рассказывающих что да как. Поэтому, во избежании пересечения с уже решенными и осветленными проблемами (хотя такое возможно), я перейду шаг за шагом просто к изложению тех проблем и их решений, которые возникли у меня во время создания приложения для массового использования.
Ну вроде со всем определился, перейду к изложению вопроса “Как обновить настройки виджета из PreferenceActivity?” К чему это применимо? – немного попытаюсь смоделировать ситуацию. Представьте, вы поставили на рабочий стол виджет, на котором отображается какая-то информация, допустим это rss-канал. У вас есть возможность перейти в параметры виджета и поменять канал на другой. Это не представляет особого труда в реализации, но сам виджет не будет знать, что вы поменяли канал, по крайней мере сразу. Есть на это некоторые причины, например Google рекомендует обновлять виджет не чаще чем раз в пол часа во избежании больших затрат энергии. В таком случае нам надо сообщать виджету, что настройки поменялись и обновить его. На момент решения этой проблемы я работал с Android’ом всего ничего, когда пытался раздобыть полезную информацию по этому поводу – увы, ничего не находил – пришлось вычитывать документацию и придумывать выход. Благо ответ был рядом и…
Решение подразумевает, что будет использоваться OnSharedPreferenceChangeListener, который позволит вызвать нам внутри нашего класса call-back метод в случае изменения настроек в PreferenceActivity. Постараюсь очень урезано накидать структуру класса:
public class Widget extends AppWidgetProvider { //... бла-бла @Override public void onEnabled(Context context) { //... } @Override public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) { //... } public void onDisabled(Context context) { //... } public static class UpdateService extends Service implements OnSharedPreferenceChangeListener { @Override public void onStart(Intent intent, int startId) { //... //... регистрируем листнер изменения настроек PreferenceManager. getDefaultSharedPreferences(this) . registerOnSharedPreferenceChangeListener(this); //... } //будет вызван при смене значения в ключе rss_adress public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { //обновляем виджет через RemoteViews } } }
В общем, если рассматривать эту структуру при выполнении, то цикл получится следующий:
Вот такой краткий гайд по работе с настройками в android. Вернутся Вам будет интересно:
|
- Публикации
Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.
Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.
Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...
Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...
Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...
Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.