这可能是一个愚蠢的问题,但我似乎在互联网上找不到很多具体信息。
假设我有两个活动:MainActivity和Secondactivity。 MainActivity有一个按钮可以进入Secondactivity。 第二个活动有一个按钮返回到主活动(下面是非常简单的代码)。
我正在尝试理解Android内存管理,这就是为什么我正在进行这个测试的原因。
我的问题:
当我不断地在活动之间来回切换时,在Android Studio中查看内存图表时,我可以看到一个蓝色的图形,它从未回到应用程序启动时分配给它的内存。我是否存在内存泄漏?(可能不是因为这是基本代码)。但是为什么它从来没有回到开始时的原始分配内存呢?
MainActivity只有这个方法:
假设我有两个活动:MainActivity和Secondactivity。 MainActivity有一个按钮可以进入Secondactivity。 第二个活动有一个按钮返回到主活动(下面是非常简单的代码)。
我正在尝试理解Android内存管理,这就是为什么我正在进行这个测试的原因。
我的问题:
当我不断地在活动之间来回切换时,在Android Studio中查看内存图表时,我可以看到一个蓝色的图形,它从未回到应用程序启动时分配给它的内存。我是否存在内存泄漏?(可能不是因为这是基本代码)。但是为什么它从来没有回到开始时的原始分配内存呢?
MainActivity只有这个方法:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnTest = (Button) findViewById(R.id.btnTest);
btnTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Log.i(null, "test");
finish();
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});
}
第二个活动只是返回到第一个活动并创建一些按钮。
public class SecondActivity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Button btnTest = (Button) findViewById(R.id.btnTest);
btnTest.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v)
{
Log.i(null, "test");
finish();
startActivity(new Intent(SecondActivity.this, MainActivity.class));
}
});
}
}
finish()
...但我认为这与finish()
没有完全删除Activity
有关。我听说onDestroy
被调用并不表示对象已经丢失,Android会在一段时间内保留实例以防再次创建。 - cozyconemotel