在我的应用程序中,我有 7 个单选按钮,每个按钮都会带你到一个特定的活动。所以总的来说,我有 8 项活动(家庭活动和 7 项内心活动)。
7 个内部活动中的每一个都有一个ViewFlipper
,其中包含 5 到 8 个视图。
当我在OS version-2.2的设备或OS version-2.3.3的设备上运行此应用程序时,它工作正常,但是当我在OS version-4.0 的设备上运行相同的应用程序时,它会抛出java.lang.OutOfMemoryError,很少(任何地方,例如第二个活动的第三个屏幕ViewFlipper
)。
SO上的此链接建议增加“最大VM应用程序堆大小”,但由于我正在设备上进行测试,所以这是不可能的。
这个其他链接建议对位图进行采样。我确实每个活动使用 15-20 个图像(1 个作为 5-8 个屏幕和一些附加图像的背景),但我只将所有图像设置在各自的xml文件中。我不对代码中的位图做任何事情。
在一个地方,我还发现使用了我在每个活动的onDestroy()中放置的unbindDrawables(),但无济于事。
此外,如果内存是真正的问题,那么它如何在 2.2 和 2.3.3 上工作,而在更新了操作系统和整体配置更好的 4.0 设备上却不能工作。
操作系统版本 4.0 中是否存在与此相关的错误?
有人可以指导我吗?
编辑(1)
日志猫
android.view.InflateException: Binary XML file line #8: Error inflating class <unknown>
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:823)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:729)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
at android.app.Activity.setContentView(Activity.java:1835)
at MYACTIVITYNAME.onCreate(MemberActivity.java:167)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
at android.app.ActivityThread.access$600(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
... 27 more
Caused by: java.lang.OutOfMemoryError
at android.graphics.Bitmap.nativeCreate(Native Method)
at android.graphics.Bitmap.createBitmap(Bitmap.java:605)
at android.graphics.Bitmap.createBitmap(Bitmap.java:551)
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:437)
at android.graphics.BitmapFactory.finishDecode(BitmapFactory.java:524)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:499)
at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:351)
at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:773)
at android.content.res.Resources.loadDrawable(Resources.java:1935)
at android.content.res.TypedArray.getDrawable(TypedArray.java:601)
at android.widget.ImageView.<init>(ImageView.java:119)
at android.widget.ImageView.<init>(ImageView.java:109)
... 30 more