我列举了许多不同类型的卡片,它们是卡片的子类。我使用列表来收集它们。
每次,列表视图都是实例。我请求服务器和服务器响应我 json 以实例化每种类型的卡。之后我使用 CardArrayAdapter 来适配器视图。
像这样 :
//init cards from json
List<Card> _cards = getCards(data, getActivity());
adapter.addAll(_cards);
当列表视图滑到底部时,我会再次请求并添加到适配器。
但我发现:我不能无限添加cards
到适配器。看起来 oom 。
我不知道是因为没有 RecycleBin 来回收视图还是仅仅因为在内存中构建了太多的卡(视图)。(可能是我在谈论同样的事情)
那么,我该如何解决呢?
logcat :它只是简单的 oom 日志
03-23 11:44:26.383 16371-16557/com.kingnez.umasou.app E/ImageLoader﹕ null
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:620)
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596)
at com.nostra13.universalimageloader.core.decode.BaseImageDecoder.decode(BaseImageDecoder.java:78)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.decodeImage(LoadAndDisplayImageTask.java:264)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.tryLoadBitmap(LoadAndDisplayImageTask.java:237)
at com.nostra13.universalimageloader.core.LoadAndDisplayImageTask.run(LoadAndDisplayImageTask.java:135)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:841)