【问题标题】:Android OutOfMemoryError [duplicate]Android OutOfMemoryError [重复]
【发布时间】:2015-01-21 10:45:21
【问题描述】:

在我的应用程序中,我有超过 20 张作为布局背景的图片。当我添加另一个图像时,应用程序已停止工作。

01-20 22:01:51.707: E/AndroidRuntime(15045): FATAL EXCEPTION: main
01-20 22:01:51.707: E/AndroidRuntime(15045): Process: xxxxxx, PID: 15045
01-20 22:01:51.707: E/AndroidRuntime(15045): java.lang.OutOfMemoryError
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.content.res.Resources.loadDrawable(Resources.java:3056)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.content.res.Resources.getDrawable(Resources.java:1613)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1016)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at com.android.internal.policy.impl.PhoneWindow.setDefaultIcon(PhoneWindow.java:1543)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.Activity.initActionBar(Activity.java:1996)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.Activity.setContentView(Activity.java:2011)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at xxxxxx.onCreate(xxxxx.java:1338)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.Activity.performCreate(Activity.java:5426)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.ActivityThread.access$900(ActivityThread.java:161)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.os.Handler.dispatchMessage(Handler.java:102)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.os.Looper.loop(Looper.java:157)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at android.app.ActivityThread.main(ActivityThread.java:5356)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at java.lang.reflect.Method.invokeNative(Native Method)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at java.lang.reflect.Method.invoke(Method.java:515)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
01-20 22:01:51.707: E/AndroidRuntime(15045):    at dalvik.system.NativeStart.main(Native Method)

图片在onCreate()方法中同时加载。

main.xml:

<LinearLayout
    android:id="@+id/linearLayout27"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/abc"
    android:orientation="vertical" >

onCreate():

layout26 = (LinearLayout) findViewById(R.id.linearLayout27);
layout26.setOnClickListener(this);

我应该补充一点,每张图片的大小约为 400 x 800 像素。

我知道这里已经出现了这个问题,但是我找不到适合我的情况的解决方案。

【问题讨论】:

  • 发布显示OutOfMemoryError的Logcat
  • 清单...LinearLayout?!你确定吗?
  • 设置 largeHeap="true"
  • 您是从assets/ 文件夹加载图片,而不是从res/drawable 加载图片吗?
  • 嘿,你的清单全错了,贴一个正确的

标签: java android eclipse out-of-memory


【解决方案1】:

在使用 android Bitmap 时,这是一个非常常见的问题。我一般会添加这个

android:largeHeap=“true”

在清单文件中,但最近我一直在使用 Picasso jar,这在处理图像时非常好。它也默认提供缓存。这是一个让你开始的链接 http://square.github.io/picasso/

【讨论】:

  • 我可以将使用毕加索作为背景的图像加载到布局中
  • 我没有得到您要问的内容,您是在问是否可以在布局内的背景中将图像作为异步任务加载或其他内容
  • 在毕加索图书馆的文档中我发现了这个:Picasso.with(context).load(R.drawable.landing_screen).into(imageView1);但我需要加载图像作为布局背景。而且似乎在这个库中我只能使用 imageView
  • 是的,它仅适用于 imageview,但您可以使用 imageview 设置布局背景,也可以参考 stackoverflow.com/questions/20928748/…
猜你喜欢
  • 2013-05-16
  • 1970-01-01
  • 2011-10-22
  • 2021-10-11
  • 2011-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-02-25
相关资源
最近更新 更多