-1

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

MyProject中,有一个 button( 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)。而且我知道当我们按下“结束”按钮时,一些程序可能仍然驻留在内存中,我必须通过任务管理器手动关闭它。

所以,我对这个问题有点困惑!在使用两项活动时,我有什么需要注意的吗?

4

1 回答 1

2

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

于 2012-05-08T18:09:40.953 回答