Я добавил следующий процесс, который вызывается в вашем провайдере виджетов .... примерно так ...
, чтобы виджет обновлялся в течение следующих 24 часов каждые 30 секунд ....
У меня также есть код основного приложения. У меня есть несколько настроек, которые я обновляю, а затем использую событие провайдера, чтобы затем вызвать таймер, который извлекает информацию о настройках .... обновление без службы:)
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
int[] appWidgetIds) {
try {
final int N = appWidgetIds.length;
for (int i=0; i<N; i++) {
int appWidgetId = appWidgetIds[i];
updateAppWidget(context, appWidgetManager, appWidgetId);
}
updateWidgetView(context, context.getSharedPreferences(
MainActivity.APP_PREFERENCES,
Context.MODE_PRIVATE));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void updateAppWidget(final Context context, final AppWidgetManager appWidgetManager,
final int appWidgetId){
Context c;
c = context;
try {
new CountDownTimer(86400, 30000) {
public void onTick(long millisUntilFinished) {
//do proc every 30sec here. pull prefs and show them
SharedPreferences preferencesaa = PreferenceManager.getDefaultSharedPreferences(context);
String drinkmsg = preferencesaa.getString("WIDGETTEXT", "You need to drink water.");
RemoteViews updateViews = new RemoteViews(context.getPackageName(), R.layout.widget);
updateViews.setTextViewText(R.id.widget_text_threat, drinkmsg.toString());
appWidgetManager.updateAppWidget(appWidgetId, updateViews);
}
public void onFinish() {
}
}.start();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Первое приложение, которое я собираюсь выпустить.8 чашек в день ™