如果我正确接近它,我不太确定。我想在按钮点击活动时进行一些网络操作,然后再次使用更新的数据重新启动相同的活动。
当我尝试使用以下代码执行此操作时:
new DataLoader(MainActivity.this,1,1).execute();
我收到内存泄漏错误。我尝试了下面的选项,因为我读了相同的活动参考应该被处理。
http://www.curious-creature.org/2008/12/18/avoid-memory-leaks-on-android
我试过这样做:
try {
GalleryDemoActivity.this.finalize();
} catch (Throwable e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
new DataLoader(new MainActivity(),1,1).execute();
但这给了我错误,因为它发现MainActivity的实例为Null。
Stcktrace: 10-02 22:33:59.060:E / dalvikvm-heap(18637):分配225808字节时内存不足。
10-02 22:33:59.060: I/dalvikvm(18637): "main" prio=5 tid=1 RUNNABLE
10-02 22:33:59.060: I/dalvikvm(18637): | group="main" sCount=0 dsCount=0 obj=0x40c976b8 self=0x400630c0
10-02 22:33:59.060: I/dalvikvm(18637): | sysTid=18637 nice=0 sched=0/0 cgrp=apps handle=1074956408
10-02 22:33:59.060: I/dalvikvm(18637): | schedstat=( 0 0 0 ) utm=890 stm=80 core=0
10-02 22:33:59.060: I/dalvikvm(18637): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
10-02 22:33:59.070: I/dalvikvm(18637): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
10-02 22:33:59.070: I/dalvikvm(18637): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
10-02 22:33:59.070: I/dalvikvm(18637): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785)
10-02 22:33:59.080: I/dalvikvm(18637): at android.content.res.Resources.loadDrawable(Resources.java:1934)
10-02 22:33:59.080: I/dalvikvm(18637): at android.content.res.Resources.getDrawable(Resources.java:663)
10-02 22:33:59.080: I/dalvikvm(18637): at com.gurbani.sikhwallpaper.GalleryDemoActivity.getDrawablesList(GalleryDemoActivity.java:230)
10-02 22:33:59.090: I/dalvikvm(18637): at com.gurbani.sikhwallpaper.GalleryDemoActivity.onCreate(GalleryDemoActivity.java:71)
10-02 22:33:59.090: I/dalvikvm(18637): at android.app.Activity.performCreate(Activity.java:5013)
10-02 22:33:59.090: I/dalvikvm(18637): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
10-02 22:33:59.090: I/dalvikvm(18637): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2029)
10-02 22:33:59.090: I/dalvikvm(18637): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2090)
10-02 22:33:59.090: I/dalvikvm(18637): at android.app.ActivityThread.access$600(ActivityThread.java:136)
10-02 22:33:59.090: I/dalvikvm(18637): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201)
10-02 22:33:59.090: I/dalvikvm(18637): at android.os.Handler.dispatchMessage(Handler.java:99)
10-02 22:33:59.100: I/dalvikvm(18637): at android.os.Looper.loop(Looper.java:137)
10-02 22:33:59.100: I/dalvikvm(18637): at android.app.ActivityThread.main(ActivityThread.java:4802)
10-02 22:33:59.100: I/dalvikvm(18637): at java.lang.reflect.Method.invokeNative(Native Method)
10-02 22:33:59.100: I/dalvikvm(18637): at java.lang.reflect.Method.invoke(Method.java:511)
10-02 22:33:59.110: I/dalvikvm(18637): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:813)
10-02 22:33:59.110: I/dalvikvm(18637): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:580)
10-02 22:33:59.110: I/dalvikvm(18637): at dalvik.system.NativeStart.main(Native Method)
请帮我解决正确的方法。
谢谢,
阿曼