我正在尝试将图像设置为视图(PiePlot)的背景,但我遇到了OutOfMemory
异常。
Bg图像大小为170kb。
我尝试了 5kb 的背景样本图像,它毫无例外地工作。
我试过以下:
@Override
protected void onDestroy() {
super.onDestroy();
unbindDrawables(mView);
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null) {
view.getBackground().setCallback(null);
}
if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
unbindDrawables(((ViewGroup) view).getChildAt(i));
}
((ViewGroup) view).removeAllViews();
}
}
但这在onDestroy()
调用时很有用。但是在启动应用程序时,这将不起作用,因此应用程序崩溃。
我也试过这个:
BitmapDrawable bitmapDrawable = (BitmapDrawable) ctx.getResources().getDrawable(R.drawable.bg2);
BitmapFactory.Options bitopt = new BitmapFactory.Options();
bitopt.inSampleSize = 10;
plot.setBackgroundImage(bitmapDrawable); //plot is PiePlot object
但同样的结果,即应用程序崩溃。
任何帮助表示赞赏。