Виджеты, настроенные с помощью android: configure получит onUpdate, даже если настройка не завершена

Вот как я настраиваю виджет своего приложения:

<appwidget-provider
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:minWidth="240dp"
    android:minHeight="193dp"
    android:updatePeriodMillis="86400000"
    android:initialLayout="@layout/xyz_appwidget"
    android:configure="com.xyz.activity.Configuration"
    />

Таким образом, система вызовет действие Configuration , как только виджет был помещен на рабочий стол пользователем. К сожалению, без применения конфигурации этот виджет не должен выводиться на экран.

Я добавил некоторые отладочные данные. Это происходит, когда пользователь выбирает виджет для своего рабочего стола. Примечание: Это когда действие конфигурации находится впереди, а НЕ виджет.

I/ActivityManager(  101): Start proc com.xyz for broadcast com.xyz/.widget.xyz.XyzWidgetProvider: pid=14371 uid=10050 gids={3003, 1015}
D/XyzWidgetProvider(14371): onReceive: android.appwidget.action.APPWIDGET_ENABLED
D/XyzWidgetProvider(14371): onEnabled
D/XyzWidgetProvider(14371): onReceive: android.appwidget.action.APPWIDGET_UPDATE

Это означает, что даже виджет не настроен, оба события (ENABLED, UPDATE) будут запущены. Включено для меня имеет смысл, но UPDATE явно нет. Особенно, когда действие Configuration завершилось успешно, никаких дополнительных событий UPDATE не отправляется.

Я также прочитал это, установив результат действия Configuration на Activity.RESULT_CANCELED , можно отменить процесс настройки. Но поскольку это явно работает асинхронно, я не знаю, как сделать процесс настройки блокирующим ? Кто-нибудь сталкивался с этим раньше?

Мое последнее замечание: я взглянул на виджет галереи Android, который каким-то образом управляет этим должным образом, поэтому ненастроенный виджет галереи не будет добавлен. Но я подозреваю, что там есть какая-то магия HTC , поскольку журналы не очень полезны.

10
задан Sebastian Roth 30 December 2010 в 10:25
поделиться