Webサービスを使用してウィジェットのデータを取得して表示するAndroid Widgetがあります。このウィジェットは、構成アクティビティがextends PreferenceActivity
です。設定アクティビティは、ウィジェットがインストールされるとすぐに起動します。これは、このウィジェットの望ましい動作です。Android Widget:ウィジェットが画面に追加される前の設定アクティビティを表示します。
問題は、ウィジェットがホーム画面に追加されるたびに、ウィジェットが設定アクティビティの開始/完了前に自分自身を更新しようとするため、長い遅延(数秒)が発生する可能性があります。新しいウィジェットが追加されるたびに、ウィジェットが自身を更新しようとする前に、構成アクティビティーが発生する必要があります。
- Widget.onRecive:ここ
は、ウィジェットが追加されたとき、私はLogCatで見ている一連のイベントである= APPWIDGET_ENABLED
- アクションがWidget.onReceive
- をWidget.onEnabled:アクションを= APPWIDGET_UPDATE
- Widget.onUpdate:ウィジェットサービスが開始されました。
- WidgetService.onStartCommand:構成アクティビティがすぐに表示されるのを遅らせる潜在的に長い実行中の作業。
- WidgetConfiguration.onCreate
- Widget.onReceive:アクション= APPWIDGET_UPDATE
- Widget.onUpdate:ウィジェットサービスが再び
- WidgetService.onStartCommand開始されます。潜在的に長い再び実行される作業を実行しています。
ウィジェットが追加されると、設定ビューが表示される前にサービスが起動します。
たManifest.xmlは
<?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>
質問
システムの前に示される構成アクティビティーを強制する方法はありますが、ホーム画面にウィジェットを追加しようと? Androidのドキュメントから
私は厄介な問題がありました。 update()メソッドの呼び出しは、設定アクティビティが表示される前に行われます。私はこの振る舞いを変える方法を見つけませんでした。 – mrd