タブレット (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"
/>
最初の画面と 2 番目の画面は適切に読み込まれますが、3 番目の画面を読み込もうとすると、次のエラーが発生します (startActivity によって読み込まれるすべての画面はそのレイアウトです。別の順序で読み込むと、レイアウト エラーではありません。 、2 つと 3 つ目のクラスもロードできます):
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 未満です。
助言がありますか?
ありがとう!