Не обновляется виджет

Ответить
Аватара пользователя
FastRus1804
Сообщения: 49
Зарегистрирован: 22 июн 2014, 11:20

Не обновляется виджет

Сообщение FastRus1804 » 21 ноя 2014, 16:34

Всем привет. Я решил сделать часики, но время не обновляется каждую секунду.
Хотя я указал обновление через каждую секунду.

Код: Выделить всё

 android:updatePeriodMillis="1000"


И в методе 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);
        }
Время появляется только один раз и всё.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Не обновляется виджет

Сообщение doter.ua » 21 ноя 2014, 18:13

Зачем обновлять каждую сек? батарея не резиновая. Минималка 30 мин, чаще только программно, например по нажатию. В уроках есть инфа об этом.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
FastRus1804
Сообщения: 49
Зарегистрирован: 22 июн 2014, 11:20

Re: Не обновляется виджет

Сообщение FastRus1804 » 21 ноя 2014, 18:46

doter.ua писал(а):Зачем обновлять каждую сек? батарея не резиновая. Минималка 30 мин, чаще только программно, например по нажатию. В уроках есть инфа об этом.
Я же говорю у меня часы. Они время показывают они сами должны обновляться.

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Не обновляется виджет

Сообщение doter.ua » 22 ноя 2014, 11:13

FastRus1804 писал(а): Я же говорю у меня часы. Они время показывают они сами должны обновляться.

Допустим юзер за сутки в сумме смотрит на виджет 2-3 мин. Для кого он будет обновляться каждую секунду остальные 23 часа 57мин ??
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
FastRus1804
Сообщения: 49
Зарегистрирован: 22 июн 2014, 11:20

Re: Не обновляется виджет

Сообщение FastRus1804 » 22 ноя 2014, 16:22

doter.ua писал(а):
FastRus1804 писал(а): Я же говорю у меня часы. Они время показывают они сами должны обновляться.

Допустим юзер за сутки в сумме смотрит на виджет 2-3 мин. Для кого он будет обновляться каждую секунду остальные 23 часа 57мин ??
Но все виджет часы обновляются каждую минуту. Показывают время точь в точь я сидел проверял. Так как же тогда сделать то же самое?

kasperdun
Сообщения: 12
Зарегистрирован: 24 ноя 2014, 22:35

Re: Не обновляется виджет

Сообщение kasperdun » 25 ноя 2014, 20:17

FastRus1804 писал(а):
doter.ua писал(а):
FastRus1804 писал(а): Я же говорю у меня часы. Они время показывают они сами должны обновляться.

Допустим юзер за сутки в сумме смотрит на виджет 2-3 мин. Для кого он будет обновляться каждую секунду остальные 23 часа 57мин ??
Но все виджет часы обновляются каждую минуту. Показывают время точь в точь я сидел проверял. Так как же тогда сделать то же самое?
Во первых можно заметить как при длительном лежании телефона с выключенным экраном, после включения большинство виджетов часов будет показывать старое время первые секунды после включения. А значит они работают только когда включен экран, что и правильно.
А значит, это делается в коде, события включения экрана запускают работу часов. А выключение приостанавливает. Ну и обновление каждую секунду как вы понимаете за вас в этом случае никто не сделает.

Аватара пользователя
DenK
Сообщения: 11
Зарегистрирован: 15 июл 2014, 10:15
Откуда: Нижний Новгород

Re: Не обновляется виджет

Сообщение DenK » 03 дек 2014, 15:27

Код: Выделить всё

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?

Ответить