【问题标题】:Studio ImageView Error Force CloseStudio ImageView 错误 强制关闭
【发布时间】:2016-03-04 23:02:08
【问题描述】:

有人知道如何解决这个错误吗?一旦我打开具有代码的项目,活动将无法打开并且应用程序强制关闭

 03-05 03:34:03.409 6563-6563/org.intercode.lifeatceu E/AndroidRuntime: FATAL EXCEPTION: main
     java.lang.OutOfMemoryError
         at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
         at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
         at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444)
         at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:817)
         at android.content.res.Resources.loadDrawable(Resources.java:2854)
         at android.content.res.TypedArray.getDrawable(TypedArray.java:602)
         at android.widget.ImageView.<init>(ImageView.java:126)
         at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:58)
         at android.support.v7.widget.AppCompatImageView.<init>(AppCompatImageView.java:54)
         at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:95)
         at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:938)
         at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:992)
         at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
         at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:681)
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:760)
         at android.view.LayoutInflater.parseInclude(LayoutInflater.java:846)
         at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
         at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
         at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
         at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
         at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:256)
         at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:109)
         at org.intercode.lifeatceu.PFOT.onCreate(PFOT.java:28)
         at android.app.Activity.performCreate(Activity.java:5255)
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
         at android.app.ActivityThread.access$700(ActivityThread.java:154)
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
         at android.os.Handler.dispatchMessage(Handler.java:99)
         at android.os.Looper.loop(Looper.java:137)
         at android.app.ActivityThread.main(ActivityThread.java:5306)
         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:1102)
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
         at dalvik.system.NativeStart.main(Native Method)

PFOT.java 第 28 行是

setContentView(R.layout.pfot);

【问题讨论】:

  • 但我放的所有图像都像 50-300kb 一样,它适用于其他活动......

标签: android performance android-layout android-fragments android-intent


【解决方案1】:

这是一个内存不足错误,您尝试显示的资源中有一个非常大的图像并且超过了最大尺寸。检查您的 XML 布局以获取可绘制对象并缩小任何大型的。

【讨论】:

  • 我放入drawables的都是50-300kb,其他项目使用那个idk-.-
  • 这不是以 KB 为单位的大小问题,而是以像素为单位的大小。磁盘上的图像很可能已压缩,但要显示它们需要转换为更大的位图。
  • 它的尺寸是 700x400... 什么尺寸更适合它?
【解决方案2】:

这是因为您的进程消耗了太多内存,这导致分配失败,在它快被填满之后。您应该考虑查看图像以及加载方式以及随着时间的推移如何影响内存。

【讨论】:

  • 但我尝试在 oncreate 上加载的只是 50-300kb 图像不适用于此活动,但适用于其他活动
  • 你需要查看你的应用程序活动的内存随着时间的推移。
【解决方案3】:

(1)使用Vectore Drawable代替png ans jpj文件

https://developer.android.com/reference/android/graphics/drawable/VectorDrawable.html

(2) 在build.gradal文件中加入这一行

默认配置 {

    vectorDrawables.useSupportLibrary = true
}

(3) 在你的 xml 文件中在父布局中添加这一行

xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"

(4) 像这样在ImageView中使用srcCompat属性

<android.support.v7.widget.AppCompatImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                app:srcCompat="@drawable/sf_tick"
                tools:ignore="MissingPrefix" />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    相关资源
    最近更新 更多