在我的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)。我知道当我们按下“结束”按钮时,某些程序可能仍然驻留在内存中,我必须通过任务管理器手动关闭它。
所以,我对这个问题有点困惑!在使用两项活动时,我有什么必须照顾的吗?
答案 0 :(得分:2)
它不应该终止。关于这一点有很多文章和问题。 Android本身决定何时从内存中删除活动。这基于手机上的硬件规格,内存利用率和其他因素。因此,按结束/返回可能或可能将应用程序保留在内存中。在流行的Android上使用任务杀手是一个非常糟糕的主意。