第一个MapActivity实例是否总是泄漏?

问题描述:

在我们的应用程序中调查内存问题时,事实证明,如果应用程序Activity是MapActivity,则它的第一个实例将不会最终确定。导致其他内存泄漏,例如传递给setContentView的视图。第一个MapActivity实例是否总是泄漏?

有没有人注意过?

以下是测试代码,显示“MainActivity:1”未完成,而MainActivity继承自Activity。

要测试,需要多次更改设备或仿真器方向。


import com.google.android.maps.MapActivity; 
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class MainActivity extends MapActivity { 
    private static final String defaultTag   = "MA"; 

    private static final boolean isDebugModeActivate = true; 
    private static final boolean isClassTagDisplayed = false; 
    private static final boolean isWebModeActivate = false; 

    static public void d(Object thiso, String message) 
    { 
     String tag = defaultTag + (isClassTagDisplayed == true ? "_" + thiso.getClass().getSimpleName() : ""); 
     message = (isClassTagDisplayed == false ? thiso.getClass().getSimpleName() + " : " : "") + message; 
     Log.d(tag, message); 
    } 

    public MainActivity() 
    { 
    counter++; 
    uid++; 
    id = uid; 
    d(this, id + " tst constructor (" + counter + ")"); 
    } 
    private static int counter = 0; 
    private static int uid = 0; 
    private final int id; 

    protected void finalize() throws Throwable 
    { 
    counter--; 
    d(this, id + " tst finalize (" +counter + ") "); 
    super.finalize(); 
    } 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    @Override 
    protected boolean isRouteDisplayed() 
    { 
     return false; 
    } 
} 

谢谢 大卫

+0

你是不是唯一一个与Android泄漏问题:http://*.com/questions/5111139 /为什么 - 我的代码泄漏 - 何时切换活动 – 2011-02-24 22:23:16

+0

http://*.com/questions/4218359/my-simple-listview-app-is-leaking-memory-what-am-i-doing -wrong – 2011-02-24 22:23:44

+0

@泰勒,是的,我知道。由于我没有发现这个特定的内存泄漏,我想这是很好的参考它。至少这可以节省数小时的调查。 – david 2011-02-24 22:47:28

也许你应该换文与NickT here