如何在设备重启后获取小部件大小(适用于Android 4.4.4)

如何在设备重启后获取小部件大小(适用于Android 4.4.4),android,android-widget,Android,Android Widget,我有一个小部件,它的布局应该根据当前小部件的大小而改变。我使用以下代码来处理此类需求 public void onAppWidgetOptionsChanged(Context context, AppWidgetManager appWidgetManager, int appWidgetId,

我有一个小部件,它的布局应该根据当前小部件的大小而改变。我使用以下代码来处理此类需求

public void onAppWidgetOptionsChanged(Context context,
                                      AppWidgetManager appWidgetManager,
                                      int appWidgetId,
                                      Bundle newOptions) {
    int heightInDp = newOptions.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
    int heightInCell = getCellSize(heightInDp);

    RemoteViews remoteViews = org.yccheok.jstock.gui.widget.Utils.getRemoteViews(appWidgetId, getWidgetWatchlistFragmentResourceId(context, appWidgetId));
    if (heightInCell >= 3) {
        remoteViews.setViewVisibility(R.id.header, View.VISIBLE);
    } else {
        remoteViews.setViewVisibility(R.id.header, View.GONE);
    }
    appWidgetManager.updateAppWidget(appWidgetId, remoteViews);
}
这很有效。直到我在安卓4.4.4中意识到,当你关闭和打开设备电源时,只会触发onUpdate

但是,在4.1.2中,将触发OnAppWidgetOptions更改。在这种情况下,根据小部件的大小处理UI布局对我来说要容易得多。与OnAppWidgetOptions更改一样,我们收到了Bundle newOptions。从bundle中,我们可以查询当前小部件的大小


然而,如何在onUpdate中获得小部件大小?或者,换言之,在设备重新启动后,我们如何获得小部件的大小?

这只适用于具有Jelly Bean及更高版本的设备

似乎有一个API可以达到这样的目的

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN) {
    Bundle bundle = appWidgetManager.getAppWidgetOptions(appWidgetId);
    heightInDp = bundle.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT);
}