Android 从一个活动关闭另一个活动
我想知道是否有像Android 从一个活动关闭另一个活动,android,android-intent,android-activity,Android,Android Intent,Android Activity,我想知道是否有像stopService()函数那样的stopActivity()函数 我的研究表明没有这样的功能。但是,我仍然需要能够从一个活动关闭另一个活动 我如何才能做到这一点?几天前我遇到了这个问题,我很高兴地告诉你,我找到了解决这个问题的方法 首先,将此添加到要停止的活动的AndroidManifest.xml: android:launchMode="singleTop" 我将使用一个复选框示例。选中时,活动将启动;未选中时,将终止活动 示例活动A调用活动B,然后使用意图终止它 要放
stopService()
函数那样的stopActivity()
函数
我的研究表明没有这样的功能。但是,我仍然需要能够从一个活动关闭另一个活动
我如何才能做到这一点?几天前我遇到了这个问题,我很高兴地告诉你,我找到了解决这个问题的方法 首先,将此添加到要停止的活动的
AndroidManifest.xml
:
android:launchMode="singleTop"
我将使用一个复选框示例。选中时,活动将启动;未选中时,将终止活动
示例活动A调用活动B,然后使用意图终止它
要放在一个文件中的代码:
checkbox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(A.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
if (enable.isChecked()) {
intent.putExtra("keep", true);
startActivity(intent);
}
else
{
intent.putExtra("keep", false);
startActivity(filterAct);
}
}
});
要放入B中的代码:
boolean keep;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.B);
intent = this.getIntent();
boolean keep = brightnessIntent.getExtras().getBoolean("keep");
if(keep==true)
{
//execute your code here
}
}
@Override
protected void onNewIntent(Intent intent)
{
super.onNewIntent(intent);
keep = intent.getExtras().getBoolean("keep");
if(keep==false)
{
B.this.finish();
}
}
}
说明:基本上,当选中复选框时,它调用活动并传递一个布尔值,如果为真,活动将保持活动状态并被带到前台。现在,如果您不传递标志singleTop
,那么将创建此活动的许多实例singleTop
确保只调用相同的实例。现在,当复选框未选中时,将传递keep的一个新值,该值在B中进行验证。如果未选中,活动a将传递false,因此B将从onNewIntent()
函数中终止自身
另外,您还可以从其他活动中关闭活动B。只用
如果其他活动是C:
Intent intent = new Intent(C.this, B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.putExtra("keep", false);
startActivity(intent);
您可以使用另一个答案来终止某个活动,但这不是直接的原因是他们真的希望您遵循活动生命周期 在onPause()实现中,除非有充分的理由继续运行,否则应该停止与活动相关的任何长时间运行的处理 Android保留活动,除非它需要内存,因为重用已经实例化的活动要比实例化新活动快得多。让安卓为你管理内存比让你自己停止活动要好