设备重启后,我首先收到APPWIDGET_ENABLED,然后两次 APPWIDGET_UPDATE。 我花了几个小时来搜索这个没有结果。 有人经历过同样的事吗?您是否找到了避免两次调用更新的方法?
以下是一些代码:
<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");
}
}
答案 0 :(得分:2)
您是否找到了避免两次调用更新的方法?
您无法控制更新的次数。这取决于主屏幕和应用程序小部件框架。
答案 1 :(得分:0)
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
}
}
}
}