Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序在尝试重复上下滚动列表视图时强制关闭_Android - Fatal编程技术网

Android应用程序在尝试重复上下滚动列表视图时强制关闭

Android应用程序在尝试重复上下滚动列表视图时强制关闭,android,Android,我使用自定义列表适配器创建了一个在侧列表中包含文本和图像的列表视图。它工作得很好,但当我反复向上滚动列表视图,然后应用程序崩溃,在log cat中,它显示出堆大小的问题 我应该如何解决这个问题?当我在HTC one V(4.0 Api)上测试应用程序时,这个问题在低Api版本上没有出现,只是在滚动时崩溃了,它可以滚动3到4次,但如果滚动次数更多,它就会挂起,并强制关闭堆大小问题 堆栈跟踪: I/dalvikvm(20978): at dalvik.system.NativeStart.mai

我使用自定义列表适配器创建了一个在侧列表中包含文本和图像的列表视图。它工作得很好,但当我反复向上滚动列表视图,然后应用程序崩溃,在log cat中,它显示出堆大小的问题

我应该如何解决这个问题?当我在HTC one V(4.0 Api)上测试应用程序时,这个问题在低Api版本上没有出现,只是在滚动时崩溃了,它可以滚动3到4次,但如果滚动次数更多,它就会挂起,并强制关闭堆大小问题

堆栈跟踪:

I/dalvikvm(20978):   at dalvik.system.NativeStart.main(Native Method)
09-03 07:58:33.796: E/dalvikvm(20978): Out of memory: Heap Size=131107KB, Allocated=130843KB, Limit=49152KB
09-03 07:58:33.796: E/dalvikvm(20978): Extra info: Footprint=131043KB, Allowed Footprint=131107KB, Trimmed=1096KB
09-03 07:58:33.796: D/skia(20978): --- decoder->decode returned false
09-03 07:58:33.796: D/AndroidRuntime(20978): Shutting down VM
09-03 07:58:33.796: W/dalvikvm(20978): threadid=1: thread exiting with uncaught exception (group=0x40ab8228)
09-03 07:58:33.826: E/AndroidRuntime(20978): FATAL EXCEPTION: main
09-03 07:58:33.826: E/AndroidRuntime(20978): java.lang.OutOfMemoryError: (Heap Size=131107KB, Allocated=130843KB)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.graphics.BitmapFactory.nativeDecodeFile(Native Method)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:373)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:443)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at com.raila.controller.ImageDownloader.download(ImageDownloader.java:90)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at com.raila.view.NewsActivity$ItemsAdapter.getView(NewsActivity.java:166)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.widget.AbsListView.obtainView(AbsListView.java:2054)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.widget.ListView.makeAndAddView(ListView.java:2004)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.widget.ListView.fillUp(ListView.java:889)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.widget.ListView.fillGap(ListView.java:829)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.widget.AbsListView.trackMotionScroll(AbsListView.java:4636)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.widget.AbsListView$FlingRunnable.run(AbsListView.java:3899)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.os.Handler.handleCallback(Handler.java:607)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.os.Handler.dispatchMessage(Handler.java:92)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.os.Looper.loop(Looper.java:154)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at android.app.ActivityThread.main(ActivityThread.java:4974)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at java.lang.reflect.Method.invokeNative(Native Method)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at java.lang.reflect.Method.invoke(Method.java:511)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
-03 07:58:33.826: E/AndroidRuntime(20978):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
09-03 07:58:33.826: E/AndroidRuntime(20978):  at dalvik.system.NativeStart.main(Native Method)
09-03 07:58:33.977: I/dalvikvm-heap(20978): Clamp target GC heap from 134.749MB to 128.000MB
09-03 07:58:33.987: D/dalvikvm(20978): GC_CONCURRENT freed 388K, 1% free 130500K/131043K, paused 2ms+33ms
09-03 07:58:36.379: D/Process(20978): killProcess, pid=20978

错误出现在使用位图时。当你滚动时,你正在加载新的位图,所以在某个时候你会耗尽内存。 当位图不再显示时,必须调用“recycle()”。Android开发者博客上有一篇文章展示了如何做到这一点。
查看并观看视频“”,以便更好地了解listview(以及任何其他adapterView)的工作原理

另一件值得注意的事情是如何使用


此外,每次到达getView功能时,您都应该取消一个viewholder任务,这样旧任务就不会更改要显示的“新”视图的内容。

也许您可以向我们提供StackTrace请立即参考问题部分。.我已被添加了09-03 15:10:31.946:D/进程(1607):com.android.server.am.ActivityManagerService.trimApplications(ActivityManagerService.java:15565)09-03 15:10:31.946:D/Process(1607):com.android.server.am.ActivityManagerService.finishReceiver(ActivityManagerService.java:13406)09-03 15:10:31.946:D/Process(1607):android.app.activitymanager.onTransact(activitymanager.java:336)VV感谢Phillipe的回复…我使用延迟加载下载图像并显示它们,所以现在我应该在哪里使用视图持有者类,以及如何对位图执行循环。。