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保留活动,除非它需要内存,因为重用已经实例化的活动要比实例化新活动快得多。让安卓为你管理内存比让你自己停止活动要好