Регистрация    Вход    Форум    Поиск    FAQ

  •  Новости
  • Beeline + Twitter = чирикай через SMS!

    Beeline + Twitter = чирикай через SMS! На первой картинке обозначены команды, при помощи которых через SMS Вы сможете кого-либо зафолловить или же отписаться, ретвитнуть чей-либо пост или же написать личное сообщение.

    Open Graph Protocol. От создателей Facebook

    Open Graph Protocol. От создателей Facebook Разбираясь с Facebook API, случайно наткнулся на другую интересную разработку от этих людей.

    Глобальное ускорение Wordpress

    Глобальное ускорение Wordpress Не считая очевидных решений типа отключения некоторых плагинов и перехода на тему попроще, я вижу 2 пути для оптимизации: кэширование и сжатие траффика.




  •  Часы


  •  Поиск

Optimaze » СЕО » Как обновить настройки виджета из PreferenceActivity в Android




Как обновить настройки виджета из 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

            }

        }

    }

     

    В общем, если рассматривать эту структуру при выполнении, то цикл получится следующий:

    • - запускаем настройки (это у нас отдельное PreferenceActivity, тут не описано, предполагается, что с этим нет проблем);
    • - в настройках через UI мы что-то меняем, в нашем случае это адрес rss канала;
    • - новый адрес записывается в настройках по ключу, который вы определили в вашем preference. xml (например android:key=”rss_adress”);
    • - наш листнер ловит изменение настройки по ключу rss_adress;
    • - и вызывает onSharedPreferenceChanged(), в котором мы выполняем все, что хотим видеть по изменению настроек

     

    Вот такой краткий гайд по работе с настройками в android.



    Рейтинг: 4.7/5, основан на 25 голосах.


    Нравится



    Вернутся назад


       

    Вам будет интересно:

    Один блог хорошо, а два лучше! Как сделать кросспост?

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

    10 причин для здорового SEO-сна

    Уважаемые оптимизаторы - относитесь к здоровому сну очень серьезно, ведь здоровье очень важно, без него нах не нужны те самые K$.

    Стоит ли размещать обратные ссылки на каталоги при регистрации в них?

    Регистрация в каталогах - хороший способ продвижения сайта по НЧ.

    Карта сайта для WordPress

    Карта сайта - очень важный элемент любого контентного проекта на WordPress.



    •  Публикации


    8 методов раскрутки своего форума с нуля

    8 методов раскрутки своего форума с нуля Итак, у вас имеется свой собственный форум, но его никто не посещает? Мы готовы помочь вам справиться с этой нелегкой проблемой.

    Как привлекать посетителей на проект

    Как привлекать посетителей на проект Данная статья в основном рассчитана на тех, кто самостоятельно занимается продвижением своего проекта.

    Про MySQL, серверы и PayPal

    Про MySQL, серверы и PayPal Проклял все настройки кодировок, проклял DirectAdmin и еле-еле нашел то место где располагается и задается общий пароль для ...

    Реклама в Твиттере. Как подать свой продукт

    Реклама в Твиттере. Как подать свой продукт Твиттер уже давно стал из нового web 2. 0 сервиса рекламной площадкой с огромным количеством потенциальных пользователей ...

    Пока блог на локалхосте

    Пока блог на локалхосте Самое время кратко описать, чем нам придется заниматься. Прежде всего нужно понять, что блог ты будешь делать для получения ...

    Авторитет блоггера притягивает

    Авторитет блоггера притягивает Долго не знал с чего начать данную статью. Статья что-то типа мыслей вслух и философии.