onDestroy()后,活动实例仍保留在内存中

时间:2011-08-26 09:16:52

标签: android

我知道这个话题已经被打败了,但是如果Android系统在以下情况下有良好的行为,我仍然不完全理解:

我创建的小应用程序包含两个类,这里​​是代码:

Main.java

public class Main extends Activity {
    private Button bv;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        bv = (Button) findViewById(R.id.hello_txt);

        bv.setOnClickListener(
            new OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent i = new Intent(Main.this, Main2.class);
                    startActivity(i);
                }
            }
        );
    }  

}

Main2.java

public class Main2 extends Activity {

    private TextView countOfActivities; 
    @Override
    protected void onCreate(Bundle savedInstanceState) {        
        super.onCreate(savedInstanceState);
        countOfActivities = new TextView(this);

        setContentView(countOfActivities);
        countOfActivities.setText("Count of Activities: " + getInstanceCount());
    }

}

当我从第一个活动中多次点击按钮时,即使在按下BACK按钮后也应该调用第二个Activity的onDestroy(),它的实例仍保留在memmory中。

只有在创建了大约35个实例后,请点击通知我,GC清除了内存。 我只想完全确定这是正常系统的行为。

以下来自Emulator和LogCat的图片

按钮点击了10次 enter image description here

点击后的LogCat输出 enter image description here

1 个答案:

答案 0 :(得分:2)

是的,系统运行正常。 按后退按钮后,您的活动将从activity stack中删除。
可能已调用onDestroy(),这并不意味着实例实际上未从内存中分配。