Seb*_*oth 10 android android-widget
这就是我配置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"
/>
Run Code Online (Sandbox Code Playgroud)
因此,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
Run Code Online (Sandbox Code Playgroud)
这意味着即使未配置窗口小部件,也会触发两个事件(ENABLED,UPDATE).启用对我有意义,但更新显然不是.特别是当Configuration活动成功完成时,不会发送任何其他UPDATE事件.
我还读到,通过设置Configuration活动的结果,Activity.RESULT_CANCELED可以取消配置过程.但由于这显然是异步运行,我不知道如何使配置过程阻塞?以前遇到过这个人吗?
我的最后一点:我查看了Android Gallery Widget,它以某种方式正确管理,因此不会添加未配置的图库窗口小部件.但我怀疑一些HTC 魔术,因为日志不是很有帮助.
以下是处理此问题的方法:在配置活动中,在onCreate()中执行此操作:setResult(Activity.RESULT_CANCELED);
配置活动完成后,例如设置所有参数并显示小部件,请执行setResult(Activity.RESULT_OK);
因此,如果用户未完成配置活动,则会删除您的窗口小部件.
但是,在小部件代码本身(onUpdate)中,您仍需要检查配置是否完整,因为在配置完成之前肯定会调用APPWIDGET_UPDATE.如果配置不存在,您可以完全跳过所有更新,此时您的窗口小部件将不可见,并且一旦配置完成,您的窗口小部件将被系统删除或其配置在那里.
还有一件事.您需要在成功完成后从配置活动中启动窗口小部件更新,因为系统不会自行完成.
| 归档时间: |
|
| 查看次数: |
4230 次 |
| 最近记录: |