gpt4 book ai didi

android - 使用 android :configure will receive onUpdate even if configuration is unfinished 配置的小部件

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:01:45 35 4
gpt4 key购买 nike

这是我如何配置我的 APP 的小部件:

<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 Activity 。不幸的是,如果没有应用配置,这个小部件不应该出现在屏幕上。

我添加了一些调试输出。当用户为其主屏幕选择小部件时会发生这种情况。 注意:这是当配置 Activity 在前面时,而不是小部件。

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 显然不是。特别是当 Configuration Activity 成功完成时,不会发送额外的 UPDATE 事件。

我还了解到,通过将 Configuration Activity 的结果设置为 Activity.RESULT_CANCELED,可以取消配置过程。但是由于这显然是异步运行的,所以我不知道如何使配置过程阻塞?有人遇到过这个吗?

我最后要注意的是:我查看了 Android Gallery Widget,它以某种方式 正确地管理了这一点,因此不会添加未配置的画廊 widget。但我怀疑 HTC 魔法 在那里,因为日志不是很有用。

最佳答案

这是你如何处理这个:在您的配置 Activity 中,在您的 onCreate() 中执行此操作:setResult(Activity.RESULT_CANCELED);

配置 Activity 完成后,例如所有参数都已设置并且应该显示小部件,做setResult(Activity.RESULT_OK);

因此,如果用户没有完成配置 Activity ,您的小部件将被删除。

但是在widget代码本身(onUpdate)中,还是需要检查配置是否完成,因为APPWIDGET_UPDATE肯定会在配置完成前被调用。如果配置不存在,您可以完全跳过所有更新,无论如何此时您的小部件将不可见,并且一旦配置完成,您的小部件将被系统删除或它的配置在那里。

还有一件事。您需要在成功完成后从您的配置 Activity 启动小部件更新,因为系统不会自行完成。

关于android - 使用 android :configure will receive onUpdate even if configuration is unfinished 配置的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561700/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com