我正在为平板电脑 (1024x768) 开发 Android 应用程序。我在这里搜索并找到了一些解决方案,但有人解决了我的问题。该应用程序有 5 个屏幕,每个屏幕都有一个我加载的 ImageView:
<ImageView
android:id="@+id/imageView1"
android:layout_width="1024dp"
android:layout_height="768dp"
android:layout_centerHorizontal="TRUE"
android:src="@drawable/scene1"
/>
第一个和第二个屏幕加载良好,但是当我尝试加载第三个屏幕时,出现以下错误(我通过 startActivity 加载的每个屏幕其布局。这不是布局错误,因为如果我以不同的顺序加载它们,我也可以加载两个和第三个 crase):
05-28 17:03:51.774: E/AndroidRuntime(401): java.lang.RuntimeException: Unable to start activity ComponentInfo{xxx}: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
05-28 17:03:51.774: E/AndroidRuntime(401): Caused by: android.view.InflateException: Binary XML file line #10: Error inflating class <unknown>
05-28 17:03:51.774: E/AndroidRuntime(401): Caused by: java.lang.reflect.InvocationTargetException
05-28 17:03:51.774: E/AndroidRuntime(401): Caused by: java.lang.OutOfMemoryError: bitmap size exceeds VM budget
我尝试了几件事:
@Override
public void onPause()
{
super.onPause();
Log.i("URI", "Syste.gc");
// yada yada yada...
System.gc();
}
和
@Override
protected void onDestroy()
{
super.onDestroy();
unbindDrawables(findViewById(R.id.RootView));
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();
}
}
但我总是得到错误。
图像为 PNG,其重量低于 50k。
有什么建议么?
谢谢!