扩展 PreferenceActivity
。在安装小部件时,配置活动会立即启动,这是该小部件所需的行为。问题是,每当添加一个小部件到主屏幕时,小部件都会试图在配置活动启动/完成之前更新自己,这可能导致长时间延迟(几秒钟)。只要添加新的小部件,就应该在小部件尝试更新自身之前发生配置活动。
以下是我在 LogCat 中看到的事件序列,当添加小部件时:
- Widget.onRecive: action = APPWIDGET_ENABLED
- Widget.onEnabled
- Widget.onReceive: action = APPWIDGET_UPDATE
- Widget.onUpdate: Widget Service is started.
- WidgetService.onStartCommand: 可能需要长时间运行的工作,将延迟立即显示配置活动。
- WidgetConfiguration.onCreate
- Widget.onReceive: action = APPWIDGET_UPDATE
- Widget.onUpdate: 小部件服务再次启动。
- WidgetService.onStartCommand: 再次执行可能需要长时间运行的工作。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="xxx.xxx.xxxwidget"
android:versionCode="1"
android:versionName="@string/app_version" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application
android:debuggable="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name="xxxWidget" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/widget_info" />
</receiver>
<activity android:name="xxxWidgetConfigure" >
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name="xxxWidgetService" />
</application>
</manifest>
问题
是否有一种方法可以在系统尝试将小部件添加到主屏幕之前强制显示配置活动?