내 앱이 위젯이며 배경이 imageView입니다. WidgetProvider의의 onUpdate() 메소드에 는,이 메소드를 호출이 이미지 뷰 내부의 sdcard에서 비트 맵을 넣어 :SD 카드 장착/마운트 해제시 위젯의 비트 맵 배경이 사라짐
public static void changeSkinWidget(Context context,String imageBackgroundPath) throws IOException{
RemoteViews views = new RemoteViews(context.getPackageName(),R.layout.widget);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 2;
Log.i(Constants.DebugTag,"changeSkinWidget receive new path " +imageBackgroundPath);
//Change Background Skin :
FileInputStream is;
try {
is = new FileInputStream(new File(imageBackgroundPath
+ "background.png"));
BufferedInputStream bis = new BufferedInputStream(is);
Bitmap bm = BitmapFactory.decodeStream(is);
views.setImageViewBitmap(R.id.ImageBackground01, bm);
ComponentName thisWidget = new ComponentName(context,
MyWidget.class);
AppWidgetManager manager = AppWidgetManager.getInstance(context);
manager.updateAppWidget(thisWidget, views);
bis.close();
is.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
문제는 내가/마운트 해제 SDCARD 마운트 항상 위젯이 비트 맵을 상실하고, 이미지 뷰이다 레이아웃 선언 (src = R.drawable.defaultbackground)에서 발견 된 defaut drawable을 얻으면 내 위젯이 다시로드 된 것처럼 보입니다. 이것을 추적하려면 onReceive() 메서드를 사용합니다. Log.i (Constants.DEBUG_TAG, "RECEIVE INTENT :"+ intent.getAction()); 하지만 logcat에는 아무 것도 나타나지 않습니다 ... 나는 ACTION_APPWIDGET_UPDATE 액션을 사용하여 의도 한 것이지만, 아무 것도 기대하지 않았습니다.
또한 내 비트 맵에 recycle()을 호출하려고했는데 ... 문제가 해결되지 않습니다.
나는
어떤 도움을 감사 할 것 ... 마운트 해제/설치하는 동안 로그 캣을보고 이상한 오류가 발생하지 않습니다! Christophe.
감사합니다. 하지만 그것은 문제를 해결하지 못합니다. 테스트를 위해서 내부 스토리지에 PNG를 쓰려고했는데,이 내부 저장소 파일에서 새로운 비트 맵을 만들었지 만. 문제는 여기에 있습니다 :-(어떤 생각이 든?) –
죄송합니다. 다른 해결책을 찾아 보겠습니다. 사용중인 Android 버전은 무엇입니까? http://code.google.com/p/android/issues/detail?id=8489 –
맞습니까? !!!!!! –