- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的应用程序在后台闲置了一段时间后,我将其重新显示在 View 中,我注意到它非常慢,然后就是没有响应。然后我检查了 logcat,我看到了
“557296 字节分配内存不足”。在我的应用程序闲置之前,我做的最后一件事是向数据库中的几个表添加几条记录。但是,内存错误之前我的 logcat 中的最后一行与位图有关?..."android.graphics.Bitmap.createBitmap"。我不确定如何开始追踪它。
11-07 20:32:22.940: D/PMS(599): acquireWL(42e31570): PARTIAL_WAKE_LOCK CM_static 0x1 13857 10166
11-07 20:32:22.950: D/PMS(599): releaseWL(42e31570): PARTIAL_WAKE_LOCK CM_static 0x1
11-07 20:32:23.060: E/dalvikvm(16038): can't open /data/misc/app_oom.hprof: Permission denied
11-07 20:32:23.100: E/dalvikvm-heap(16038): hprofDumpHeap failed with result: -1
11-07 20:32:23.100: E/dalvikvm-heap(16038): After hprofDumpHeap for process
11-07 20:32:23.100: E/dalvikvm(16038): Out of memory: Heap Size=196608KB, Allocated=188196KB, Limit=196608KB, Proc Limit=196608KB
11-07 20:32:23.100: E/dalvikvm(16038): Extra info: Footprint=196512KB, Allowed Footprint=196608KB, Trimmed=2828KB
11-07 20:32:23.200: I/dalvikvm-heap(16038): Clamp target GC heap from 193.013MB to 192.000MB
11-07 20:32:23.200: I/dalvikvm-heap(16038): Forcing collection of SoftReferences for 557296-byte allocation
11-07 20:32:23.240: D/MtpDatabase(25526): sessionStarted
11-07 20:32:23.310: I/dalvikvm-heap(16038): Clamp target GC heap from 193.013MB to 192.000MB
11-07 20:32:23.310: E/dalvikvm-heap(16038): Out of memory on a 557296-byte allocation.
11-07 20:32:23.310: I/dalvikvm(16038): "main" prio=5 tid=1 RUNNABLE
11-07 20:32:23.310: I/dalvikvm(16038): | group="main" sCount=0 dsCount=0 obj=0x41f267e8 self=0x41f113b8
11-07 20:32:23.310: I/dalvikvm(16038): | sysTid=16038 nice=0 sched=0/0 cgrp=apps handle=1074839548
11-07 20:32:23.310: I/dalvikvm(16038): | state=R schedstat=( 0 0 0 ) utm=61459 stm=7538 core=3
11-07 20:32:23.310: I/dalvikvm(16038): at android.graphics.Bitmap.nativeCreate(Native Method)
11-07 20:32:23.310: I/dalvikvm(16038): at android.graphics.Bitmap.createBitmap(Bitmap.java:1041)
11-07 20:32:23.310: I/dalvikvm(16038): at android.graphics.Bitmap.createBitmap(Bitmap.java:983)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.buildDrawingCache(View.java:13312)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.getDrawingCache(View.java:13161)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:13859)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.drawChild(ViewGroup.java:3105)
11-07 20:32:23.310: I/dalvikvm(16038): at android.widget.ListView.drawChild(ListView.java:3590)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2934)
11-07 20:32:23.310: I/dalvikvm(16038): at android.widget.AbsListView.dispatchDraw(AbsListView.java:2520)
11-07 20:32:23.310: I/dalvikvm(16038): at android.widget.ListView.dispatchDraw(ListView.java:3560)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14175)
11-07 20:32:23.310: I/dalvikvm(16038): at android.widget.AbsListView.draw(AbsListView.java:3993)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14053)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.drawChild(ViewGroup.java:3105)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2934)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14175)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14053)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.drawChild(ViewGroup.java:3105)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2934)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14051)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.drawChild(ViewGroup.java:3105)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2934)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14051)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.drawChild(ViewGroup.java:3105)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2934)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.View.draw(View.java:14175)
11-07 20:32:23.310: I/dalvikvm(16038): at android.widget.FrameLayout.draw(FrameLayout.java:467)
11-07 20:32:23.310: I/dalvikvm(16038): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2312)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2761)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewRootImpl.draw(ViewRootImpl.java:2674)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2491)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2048)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1119)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5849)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.Choreographer$CallbackRecord.run(Choreographer.java:786)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.Choreographer.doCallbacks(Choreographer.java:586)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.Choreographer.doFrame(Choreographer.java:546)
11-07 20:32:23.310: I/dalvikvm(16038): at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:771)
11-07 20:32:23.310: I/dalvikvm(16038): at android.os.Handler.handleCallback(Handler.java:730)
11-07 20:32:23.310: I/dalvikvm(16038): at android.os.Handler.dispatchMessage(Handler.java:92)
11-07 20:32:23.310: I/dalvikvm(16038): at android.os.Looper.loop(Looper.java:158)
11-07 20:32:23.310: I/dalvikvm(16038): at android.app.ActivityThread.main(ActivityThread.java:5789)
11-07 20:32:23.310: I/dalvikvm(16038): at java.lang.reflect.Method.invokeNative(Native Method)
11-07 20:32:23.310: I/dalvikvm(16038): at java.lang.reflect.Method.invoke(Method.java:525)
11-07 20:32:23.310: I/dalvikvm(16038): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
11-07 20:32:23.310: I/dalvikvm(16038): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
11-07 20:32:23.310: I/dalvikvm(16038): at dalvik.system.NativeStart.main(Native Method)
11-07 20:32:23.310: E/dalvikvm-heap(16038): Generating hprof for process: com.test.myApp PID: 16038
最佳答案
您是否在您的应用中使用位图?您必须使用 bitmap.recycle() 回收位图。如果您不回收您的位图,您将面临内存不足异常的风险。
如果您有位图,我建议您在使用后执行此操作:
bitmap.recycle();
bitmap = null;
这将确保位图被垃圾回收。
如果您没有位图,我建议使用 DDMS to monitor heap size 中提供的工具.让您的设备进入休眠状态并记录应用程序的更改。我已经使用这些工具解决了几个内存不足的异常,我希望你能做到。
关于Android:字节分配内存不足(android.graphics.Bitmap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850267/
据我所知,有两种复制位图的方法。 Bitmap.Clone() Bitmap A = new Bitmap("somefile.png"); Bitmap B = (Bitmap)A.Clone();
我收到这个错误,我不知道为什么或不明白原因: vector fourier_descriptor(Gdiplus::Bitmap myBitmap) { vector res;
我试图了解位图原始数据是如何存储的。我读过很多关于位图存储的文章,但有一篇文章指出位图文件的原始位域数据将以相反的顺序 (ABGR) 存储。但是,我找到了另一个显示 ARGB 的图表。因此,我不确定如
Bitmap bmp = BitmapFactory.decodeStream(inputStream, null, op); bmp.getConfig() = null; 为什么bmp.getC
位图中有300帧图像,设置的帧率为30,但视频长度只有3秒;如果有600帧图像,则视频长度为6秒等;视频可以播放所有内容,但播放速度更快,速度是两倍或三倍;原因是什么?应该如何(encodeVideo
List url = new ArrayList(); public Bitmap[] thumbs = { }; 我从我的方法中获取图像fetchImage(String url) for (int
AFAIK 在 Android 上,建议将 Bitmap 对象引用为 WeakReferences 以避免内存泄漏。当不再保留位图对象的硬引用时,垃圾收集器将自动收集它。 现在,如果我理解正确,必须始
我必须从 XML 文件加载图像。 XML 文件中没有关于图像是否为 JPG/GIF/BMP 的信息。加载图像后,我需要将其转换为位图。 有人知道如何在不知道实际文件格式的情况下将图像转换为位图吗?我正
几天前,我们在 Play 商店发布了一个应用程序,它处理高质量的位图并且完全是关于编辑它们。 当我们意识到 20% 的设备出现内存不足错误时,一切进展顺利。所以我们检查了我们的代码,发现 Androi
您好,我已经加载了位图,我需要设置自己的高度和宽度, bitmap.height = 100; 但是这个声明不允许我因为它说 'System.Drawing.Image.Width' cannot b
这是我写的测试,目前会失败: var unusableColor = Color.FromArgb(13, 19, 20, 19); var retrievedColor = Color.Empty;
我是否还需要在 Bitmap.Recycle() 之后调用 Bitmap.Dispose()?或者只是 Bitmap.Dispose() 就足够了? 最佳答案 根据 Android 文档 Bitmap
我试图将所有小图像(如草、水和沥青等)放入一张位图中。 我有一个这样的数组: public int Array[]={3, 1, 3, 3, 1, 1, 3, 3, 3, 3,
开发人员 website简单地说 getHeight() 将返回位图的高度,但有人可以告诉我是像素单位还是 dp 单位? 最佳答案 这是像素。在 Java 代码中,您通常使用像素,例如 View 的宽
我正在 F# 中编写一个项目,该项目使用 System.Drawing、NET Standard 2.0 的位图功能,但无法构建该项目,因为类型“Bitmap”不是在“System.Drawing”中
我正在尝试在 Android 中扩展可缩放的图像查看器以并排使用两个图像。为此,我使用了 Bitmap.createBitmap(int, int, Bitmap.Config)。不幸的是,这似乎会使
我正在使用 Java 创建这款 Android 游戏。但是,我加载位图,然后调整它们的大小以适合屏幕等(dpi 不是很准确)。但我的想法也是为具有少量 ram 的设备加载 16b (mBitmapOp
API 26 adds new option Bitmap.Config.HARDWARE: Special configuration, when bitmap is stored only in
11-24 23:19:18.434: ERROR/AndroidRuntime(12660): Uncaught handler: thread main exiting due to uncaug
我有一组位图。它们在某种程度上都是透明的,我事先不知道哪些部分是透明的。我想从排除透明部分但在正方形中的原始位图中创建一个新位图。我认为这张图片解释了这一点: 我知道如何从现有位图中创建位图,但我不知
我是一名优秀的程序员,十分优秀!