Android - 即使按下后退按钮,程序仍然驻留在内存中

时间:2012-05-08 18:04:30

标签: android memory

在我的Android项目中,我有2个活动。一个是MyProject,另一个是MyProjectOutput

MyProject中,有一个按钮(btnProcess),它会进行一些处理并使用以下代码启动第二个活动:

    btnProcess.setEnabled(false);
    // does some network access in an AsyncTask and fetches some stuff, and store some data in the variable 'my_extra_content'
    //...

    Intent i = new Intent(this, MyProjectOutput.class);
    i.putExtra("extracontent", my_extra_content);
    startActivityForResult(i,1);

在第二个活动中,它有一个按钮返回主活动(软件后退按钮)。代码是:

    final Button btnBack = (Button) findViewById(R.id.btnBack);
    btnBack.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            //when Back button is pressed, it is cancelled
            setResult(Activity.RESULT_CANCELED);
            finish();
        }
    });

在主要活动中,我使用它来重新启用按钮:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    btnProcess.setEnabled(true);

}

我的程序在模拟器(AVD)中运行良好。我已经把这个给了我的一个拥有Android设备的朋友。经过测试,他说工作正常但是当从主活动按下后退按钮(硬件按钮)时,程序没有终止。仍在记忆中!但是当我在AVD中测试时,当我按下主要活动的硬件后退按钮时,它会显示手机的主屏幕!

我正在使用诺基亚设备(确切地说是5230)。我知道当我们按下“结束”按钮时,某些程序可能仍然驻留在内存中,我必须通过任务管理器手动关闭它。

所以,我对这个问题有点困惑!在使用两项活动时,我有什么必须照顾的吗?

1 个答案:

答案 0 :(得分:2)

它不应该终止。关于这一点有很多文章和问题。 Android本身决定何时从内存中删除活动。这基于手机上的硬件规格,内存利用率和其他因素。因此,按结束/返回可能可能将应用程序保留在内存中。在流行的Android上使用任务杀手是一个非常糟糕的主意。