2

デバイスの再起動後、最初に APPWIDGET_ENABLED を受け取り、次に APPWIDGET_UPDATE を2 回受け取ります。結果なしでこれをグーグルで検索するのにかなりの時間を費やしました。誰かが同じことを経験していますか? アップデートを 2 回呼び出さないようにする方法を見つけましたか?

ここにいくつかのコードがあります:

    <receiver android:name=".Widget" android:label="@string/app_name">
        <intent-filter>
             <action android:name="android.appwidget.action.APPWIDGET_UPDATE" /> 
        </intent-filter>
        <meta-data android:name="android.appwidget.provider" android:resource="@xml/button_widget_provider" />
    </receiver>



public void onReceive(final Context context, final Intent intent) {
    super.onReceive(context, intent);
    final String action = intent.getAction();

    if  (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action) ) {
        Log.i(TAG, "update");
    } else if (AppWidgetManager.ACTION_APPWIDGET_ENABLED.equals(action) ) {
        Log.i(TAG, "enabled");
    }
}
4

2 に答える 2

2

アップデートを 2 回呼び出さないようにする方法を見つけましたか?

更新回数を制御することはできません。それは、ホーム画面とアプリ ウィジェット フレームワーク次第です。

于 2012-11-13T17:18:30.360 に答える
-1
import java.util.ArrayList;

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;

public class CopyOfWidgetProvider extends AppWidgetProvider {

    private static ArrayList<Integer> widgets = new ArrayList<Integer>();

    @Override
    public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] widgetIDs) {
        super.onUpdate(context, appWidgetManager, widgetIDs);

        for (int widgetID : widgetIDs) {
            if (!widgets.contains(widgetID)) {
                widgets.add(widgetID);
                // this code will run only ONCE after reboot
                // loop is necessary in cases where there were more than one
                // instances of widget before reboot
            }
        }
    }

}
于 2013-05-25T12:43:45.460 に答える