2015-01-21 4 views
1

ОК, поэтому я провел некоторое исследование, и, как представляется, консенсус заключается в том, что вы не можете программно обновлять android:updatePeriodMillis.Изменение андроида: updatePeriodMillis программно

Похоже, что вам нужно использовать AlarmManager, что похоже на использование sledghammer для взлома гайки ... странно, что API не просто позволяет вам обновлять ядро ​​updatePeriodMillis.

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

Так что я просто проверяю, что это все еще так. Например, руководство по адресу http://developer.android.com/guide/topics/appwidgets/index.html хотя бы намекает, что оно имеет значение, возможно, изменить период обновления AppWidgetProvider. При обсуждении updatePeriodMillis он говорит:

«Вы могли бы также позволить пользователю регулировать частоту в конфигурации, некоторые люди могут хотите тикер обновлять каждые 15 минут, или, может быть, только четыре раза в день.»

И затем продолжает говорить об использовании AlarmManager но, видимо, только по отношению к избегая пробуждение устройства, а не изменения периода обновления.

Спасибо за любую помощь по этому вопросу.

ответ

3

Поэтому я просто проверяю, что это все еще так.

Да, это все еще так, что вы не можете обновить updatePeriodMillis. Что слишком плохо, так как мне бы хотелось увидеть метод updateUpdatePeriodMillis(). В частности, если это было сделано через какой-либо строитель или объект транзакции, подразумевая, что он тоже может быть изменен с помощью метода updateUpdateUpdatePeriodMillis().

:-)

кажется, что вы должны использовать AlarmManager вместо

Вы можете использовать JobScheduler на Android 5.0+, а также, хотя я подозреваю, что вы будете не так много или.

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

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

+0

Хм, ОК спасибо. Странно, что Google признает в своем собственном руководстве, что разработчик вполне может подумать о том, чтобы позволить пользователю обновлять интервал, и все же не предоставлять метод для этого! Вы должны отказаться от основного метода и принять совершенно другое решение или применить уродливый kludge. Не должно быть так сложно сделать что-то настолько простое. Выполняя только некоторые работы, каждое обновление N кажется разумным путем. В любом случае, посмотрите в AlarmManager. – drmrbrewer

Смежные вопросы