Android 应用程序在设备上运行,但在emmulator上崩溃

Android 应用程序在设备上运行,但在emmulator上崩溃,android,android-layout,kotlin,Android,Android Layout,Kotlin,我有一个应用程序,在我的手机设备上运行时可以完美运行。但是,它在模拟器上运行时崩溃 2021-01-11 06:58:24.719 19783-19783/com.example.myapplication E/RecyclerView: No adapter attached; skipping layout 2021-01-11 06:58:35.827 19783-19783/com.example.myapplication E/AndroidRuntime: FATAL EXCE

我有一个应用程序,在我的手机设备上运行时可以完美运行。但是,它在模拟器上运行时崩溃


  2021-01-11 06:58:24.719 19783-19783/com.example.myapplication E/RecyclerView: No adapter attached; skipping layout
2021-01-11 06:58:35.827 19783-19783/com.example.myapplication E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.myapplication, PID: 19783
    java.lang.OutOfMemoryError: Failed to allocate a 599752036 byte allocation with 4194304 free bytes and 199MB until OOM
        at dalvik.system.VMRuntime.newNonMovableArray(Native Method)
        at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620)
        at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455)
        at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:1155)
        at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720)
        at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571)
        at android.content.res.Resources.loadDrawable(Resources.java:858)
        at android.content.res.TypedArray.getDrawable(TypedArray.java:928)
        at android.widget.ImageView.<init>(ImageView.java:162)
        at android.widget.ImageView.<init>(ImageView.java:150)
        at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:74)
        at androidx.appcompat.widget.AppCompatImageView.<init>(AppCompatImageView.java:69)
        at androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:199)
        at androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:119)
        at androidx.appcompat.app.AppCompatDelegateImpl.createView(AppCompatDelegateImpl.java:1551)
        at androidx.appcompat.app.AppCompatDelegateImpl.onCreateView(AppCompatDelegateImpl.java:1602)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:858)
        at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:518)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:426)
  at com.example.myapplication.Fragments.Friends_List$DisplayAllFriends$adapter$1.onCreateViewHolder(Friends_List.kt:495)


2021-01-11 06:58:24.719 19783-19783/com.example.myapplication E/RecyclerView:未连接适配器;跳过布局
2021-01-11 06:58:35.827 19783-19783/com.example.myapplication E/AndroidRuntime:致命异常:main
进程:com.example.myapplication,PID:19783

java.lang.OutOfMemoryError:无法分配599752036字节的分配,其中4194304个可用字节和199MB的内存 位于dalvik.system.VMRuntime.newNonMovableArray(本机方法) 在android.graphics.BitmapFactory.NativeDecodeset(本机方法) 位于android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:620) 位于android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:455) 位于android.graphics.drawable.drawable.createFromResourceStream(drawable.java:1155) 位于android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:720) 位于android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:571) 位于android.content.res.Resources.loadDrawable(Resources.java:858) 位于android.content.res.TypedArray.getDrawable(TypedArray.java:928) 在android.widget.ImageView上(ImageView.java:162) 在android.widget.ImageView上。(ImageView.java:150) 位于androidx.appcompat.widget.AppCompatImageView。(AppCompatImageView.java:74) 位于androidx.appcompat.widget.AppCompatImageView。(AppCompatImageView.java:69) 在androidx.appcompat.app.AppCompatViewInflater.createImageView(AppCompatViewInflater.java:199)中 在androidx.appcompat.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:119)中 在androidx.appcompat.app.appcompatedelegateimpl.createView(appcompatedelegateimpl.java:1551) 在androidx.appcompat.app.AppCompateDelegateImpl.onCreateView(AppCompateDelegateImpl.java:1602)中 位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:769) 位于android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:727) 位于android.view.LayoutInflater.rInflate(LayoutInflater.java:858) 位于android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:821) 在android.view.LayoutInflater.inflate(LayoutInflater.java:518) 在android.view.LayoutInflater.充气(LayoutInflater.java:426) 在com.example.myapplication.Fragments.Friends\u List$DisplayAllFriends$adapter$1.onCreateViewHolder(Friends\u List.kt:495)

问题是指向我的好友列表xml文件,但在我的实际手机上,一切看起来都正常,运行正常。

编辑Menifest
android:hardwareAccelerated=“false”,android:largeHeap=“true”


在评论中给出了回答,但问题是它试图为599MB的位图分配内存,这非常巨大!它可能是一个非常大的图像-4000 x 4000 x 32位让你进入一个大概的范围。文件大小可能没有那么大(JPG和PNG可能非常有效),但它们会解压成位图,内存的使用取决于图像的尺寸

无论如何,你可能不应该使用这样大小的图像(或者,如果你是这样,你可能需要寻找更有效的方式来显示它们)——但是从它听起来的样子来看,你有一个列表,并且图像应该相当小。所以你肯定不想用大的

实际上,您需要计算图像在屏幕上的大小(在
dp
中,与在中测量的每个其他
视图相同,因此易于比较),然后将它们调整为适当的像素大小。-理想情况下,每个密度都有一个版本,完全调整大小并优化(例如,您可能希望在较小的密度上应用锐化)


这不仅仅是为了优化图像的显示效果——不断缩放大图像会让你的应用程序运行得更糟,而且包括比你实际需要的大得多的资源会增加APK/应用程序包的大小。因此,这绝对是一个很好的做法,有图像,这正是你需要的

在更新我的清单之后,我仍然收到相同的错误…听起来你要么在RAM中缓存太多的文件,要么一遍又一遍地实例化相同的位图和视频,直到你的内存用完。除非您有特殊要求,否则您不应该在2016年在Android上编写自己的图像加载和缓存代码。使用已解决此问题的库之一。有关更多指导,请参阅毕加索v/s Imageloader v/s Fresco vs Glide。“java.lang.OutOfMemoryError:未能分配599752036字节”。。。这将是599MB。并非所有PC都配置有大型RAM和交换空间。使用“top”命令检查交换空间的使用情况。尝试增加ram大小,如果您尝试加载599MB位图,可能内存太小,您将遇到问题!尤其是从资源加载时。为什么你有这么大的图像,是什么?@cactustictas我在3个XML文件上有很多相同的图标重复。。。我有一些“如果”语句,可以使它们可见或不可见。我想我可以用毕加索来代替吗?@cactustictacs非常感谢你。我调整了图像的大小,不再出现错误:)你能把你的回答留作“答案”吗,这样我就可以把它标记为已解决?谢谢
<application
android:allowBackup="true"
android:hardwareAccelerated="false"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:theme="@style/AppTheme">