Если я правильно понял проблему, вам нужно иметь уникальные экземпляры этих значений для каждого экземпляра виджета.
Для такого поведения вам нужно хранить данные в статическом объекте, разделенном на appWidgetId. На мой взгляд, лучший способ сделать это - использовать статический HashMap пользовательских объектов, например:
private static class MyValues{
private final int iPicNum = 0;
private final boolean bClosed = false;
public MyValues(int iPicNum, boolean bClosed) {
this.iPicNum = iPicNum;
this.bClosed = bClosed;
}
public int getiPicNum() {
return iPicNum;
}
public boolean isbClosed() {
return bClosed;
}
}
В вашем классе AppWidgetProvider:
private static HashMap<int,MyValues> mValues = new HashMap<int,MyValues>;
Когда вам сначала нужно сохранить некоторые данные для виджета:
mValues.put(appWidetId, new MyValues(iPicNum,bClosed);
Для получения данных:
MyValues values = mValues.get(appWidgetId);
if (values != null){
int iPicNum = values.getiPicNum();
boolean bClosed = values.isbClosed();
}
И не забудьте очистить неиспользуемые данные в методе onDeleted () (он вызывается при удалении одного экземпляра виджета с экрана):
public void onDeleted(Context context, int[] appWidgetIds) {
for (int appWidgetId : appWidgetIds) {
if (appWidgetId != -1) {
mValues.remove(appWidgetId);
}
}
}
Надеюсь, это поможет.