Виджет приложения, получающий контент из базы данных - проблемы с обновлением - PullRequest
1 голос
/ 18 марта 2011

Я создаю приложение, которое позволяет пользователям создавать и удалять пробелы. Пример пространства: офис, комната для переговоров, магазин и т. Д. Пользователь устанавливает пространство, когда он находится в этом месте. Например, если он находится в офисе, он установит пространство для офиса.

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

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

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

Кто-нибудь знает, как справиться с этой проблемой, или имеет хороший совет. Или знаете какие-нибудь хорошие учебники, которые действительно работают таким образом.

Я новичок в Android и Java.

Ответы [ 3 ]

2 голосов
/ 14 сентября 2012

вы можете использовать эту библиотеку: Android SQLiteAssetHelper

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

Это помогло мне:)

0 голосов
/ 02 марта 2012

Да, ссылка, предоставленная dave.c, в значительной степени правильная, но если использовать виджет, поддерживаемый коллекцией, в моем случае база данных, небольшая модификация дает ожидаемый результат:

private void updateAllWidgets() {
    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(getContext().getApplicationContext());
    int[] appWidgetIds = appWidgetManager.getAppWidgetIds(new ComponentName(getContext().getApplicationContext(), ListWidgetProvider.class));
    if (appWidgetIds.length > 0) {
        // Tell the widgets that the list items should be invalidated and refreshed!
        // Will call onDatasetChanged in ListWidgetService, doing a new requery
        appWidgetManager.notifyAppWidgetViewDataChanged(appWidgetIds, R.id.notes_list);
    }
}
0 голосов
/ 18 марта 2011

Если вы хотите обновить виджет программно, вы можете использовать подход в этот ответ

...