创建活动的新实例

时间:2014-10-02 16:40:06

标签: java android memory-leaks

如果我正确接近它,我不太确定。我想在按钮点击活动时进行一些网络操作,然后再次使用更新的数据重新启动相同的活动。

当我尝试使用以下代码执行此操作时:

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)

请帮我解决正确的方法。

谢谢,

阿曼

0 个答案:

没有答案