Страница 1 из 1
Не обновляется виджет
Добавлено: 21 ноя 2014, 16:34
FastRus1804
Всем привет. Я решил сделать часики, но время не обновляется каждую секунду.
Хотя я указал обновление через каждую секунду.
И в методе onUpdate тоже всё прописал.
Код: Выделить всё
for (int id : appWidgetIds)
{
RemoteViews rv = new RemoteViews(context.getPackageName(),R.layout.widget);
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
rv.setTextViewText(R.id.tvTime, sdf.format(new Date(System.currentTimeMillis())));
appWidgetManager.updateAppWidget(id, rv);
}
Время появляется только один раз и всё.
Re: Не обновляется виджет
Добавлено: 21 ноя 2014, 18:13
doter.ua
Зачем обновлять каждую сек? батарея не резиновая. Минималка 30 мин, чаще только программно, например по нажатию. В уроках есть инфа об этом.
Re: Не обновляется виджет
Добавлено: 21 ноя 2014, 18:46
FastRus1804
doter.ua писал(а):Зачем обновлять каждую сек? батарея не резиновая. Минималка 30 мин, чаще только программно, например по нажатию. В уроках есть инфа об этом.
Я же говорю у меня часы. Они время показывают они сами должны обновляться.
Re: Не обновляется виджет
Добавлено: 22 ноя 2014, 11:13
doter.ua
FastRus1804 писал(а): Я же говорю у меня часы. Они время показывают они сами должны обновляться.
Допустим юзер за сутки в сумме смотрит на виджет 2-3 мин. Для кого он будет обновляться каждую секунду остальные 23 часа 57мин ??
Re: Не обновляется виджет
Добавлено: 22 ноя 2014, 16:22
FastRus1804
doter.ua писал(а):FastRus1804 писал(а): Я же говорю у меня часы. Они время показывают они сами должны обновляться.
Допустим юзер за сутки в сумме смотрит на виджет 2-3 мин. Для кого он будет обновляться каждую секунду остальные 23 часа 57мин ??
Но все виджет часы обновляются каждую минуту. Показывают время точь в точь я сидел проверял. Так как же тогда сделать то же самое?
Re: Не обновляется виджет
Добавлено: 25 ноя 2014, 20:17
kasperdun
FastRus1804 писал(а):doter.ua писал(а):FastRus1804 писал(а): Я же говорю у меня часы. Они время показывают они сами должны обновляться.
Допустим юзер за сутки в сумме смотрит на виджет 2-3 мин. Для кого он будет обновляться каждую секунду остальные 23 часа 57мин ??
Но все виджет часы обновляются каждую минуту. Показывают время точь в точь я сидел проверял. Так как же тогда сделать то же самое?
Во первых можно заметить как при длительном лежании телефона с выключенным экраном, после включения большинство виджетов часов будет показывать старое время первые секунды после включения. А значит они работают только когда включен экран, что и правильно.
А значит, это делается в коде, события включения экрана запускают работу часов. А выключение приостанавливает. Ну и обновление каждую секунду как вы понимаете за вас в этом случае никто не сделает.
Re: Не обновляется виджет
Добавлено: 03 дек 2014, 15:27
DenK
Код: Выделить всё
private static final int UPDATE_PERIOD_MS = 30000;
@Override
public void onEnabled(Context aContext) {
super.onEnabled(aContext);
AlarmManager alarmManager = (AlarmManager) aContext.getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(),
UPDATE_PERIOD_MS, createPendingIntentToUpdateWidget(aContext));
}
@Override
public void onDisabled(Context aContext) {
super.onDisabled(aContext);
AlarmManager alarmManager = (AlarmManager) aContext.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(createPendingIntentToUpdateWidget(aContext));
}
/**
* Creates PendingIntent to update the widget.
*
* @param aContext Context.
* @return PendingIntent to update the widget.
*/
PendingIntent createPendingIntentToUpdateWidget(Context aContext) {
Intent intentToUpdateWidget = new Intent(aContext, LockScreenWidgetProvider.class);
intentToUpdateWidget.setAction(ACTION_UPDATE_WIDGET);
return PendingIntent.getBroadcast(aContext, 0, intentToUpdateWidget, 0);
}
Ловишь ACTION_UPDATE_WIDGET и обновляешь виджет. Do you understand me?