android从图库中删除或回收图片?有可能吗?
我怎么能这样做? (g是我的画廊视图)
我试过了:
private void exit() {
g.setAdapter(null);
for (int i=0; i< imgadapter.images.size(); i++) {
if (imgadapter.images.get(i)!=null) {
imgadapter.images.get(i).recycle();
imgadapter.images.set(i, null);
}
}
imgadapter.images.clear();
System.gc();
}
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): java.lang.NullPointerException
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.widget.Gallery.makeAndAddView(Gallery.java:748)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.widget.Gallery.layout(Gallery.java:625)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.widget.Gallery.onLayout(Gallery.java:339)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.view.View.layout(View.java:7228)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.view.View.layout(View.java:7228)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.view.View.layout(View.java:7228)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.widget.FrameLayout.onLayout(FrameLayout.java:338)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.view.View.layout(View.java:7228)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.view.ViewRoot.performTraversals(ViewRoot.java:1145)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.view.ViewRoot.handleMessage(ViewRoot.java:1865)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.os.Handler.dispatchMessage(Handler.java:99)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.os.Looper.loop(Looper.java:130)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at android.app.ActivityThread.main(ActivityThread.java:3687)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at java.lang.reflect.Method.invokeNative(Native Method)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at java.lang.reflect.Method.invoke(Method.java:507)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
08-05 09:09:19.671: ERROR/AndroidRuntime(1279): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:2)
地毯炸弹你的适配器并删除所有内容可能不是一个好主意,无论它是否仍然在使用。 recycle
是无情的,会删除您的位图,即使它仍在使用中。
由于您使用的是Gallery,我会使用Android内置的适配器回收机制。
了解Adapter.getView
如何获取View
参数。如果那不是null,则表示您正在回收旧视图。这是你从旧视图中获取位图的最佳位置(你知道它将不再使用了!)并回收它。然后,您可以使用该视图并重新填充它(而不是创建一个新视图)。