activity启动FLAG之FLAG_ACTIVITY_CLEAR_TASK「建议收藏」

activity启动FLAG之FLAG_ACTIVITY_CLEAR_TASK「建议收藏」随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)官方文档解释:IfsetinanIntentpassedtoContext.startActivity(),thisflagwillcauseanyexistingtaskthat…

大家好,又见面了,我是你们的朋友全栈君。

随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)

activity启动FLAG之FLAG_ACTIVITY_CLEAR_TASK「建议收藏」

官方文档解释:

If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the activity to be cleared before the activity is started. That is, the activity becomes the new root of an otherwise empty task, and any old activities are finished. This can only be used in conjunction with FLAG_ACTIVITY_NEW_TASK.

翻译:如果在通过Context.startActivity()启动activity时为Intent设置了此标识,这个标识将导致:在此activity启动之前,任何与此activity相关联的task都会被清除。也就是说,此

activity将变成一个空栈中新的最底端的activity,所有的旧activity都会被finish掉,这个标识仅仅和FLAG_ACTIVITY_NEW_TASK联合起来才能使用。

下面给一个例子,看看设置了此标识和不设置有什么区别:

MainActivity:

package com.hom.testflag;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;
import android.app.Activity;
import android.content.Intent;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LinearLayout layout = new LinearLayout(this);
		Button btn = new Button(this);
		btn.setText("跳转到A");
		layout.addView(btn);
		setContentView(layout);
		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(MainActivity.this, ActivityA.class);
				startActivity(intent);
			}
		});
	}

}

ActivityA:

package com.hom.testflag;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

public class ActivityA extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LinearLayout layout = new LinearLayout(this);
		Button btn = new Button(this);
		btn.setText("跳转到B");
		layout.addView(btn);
		setContentView(layout);

		btn.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				Intent intent = new Intent(ActivityA.this, ActivityB.class);
				intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
				startActivity(intent);
			}
		});
	}
}

ActivityB:

package com.hom.testflag;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;

public class ActivityB extends Activity {
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		LinearLayout layout = new LinearLayout(this);
		Button btn = new Button(this);
		btn.setText("ActivityB");
		layout.addView(btn);
		setContentView(layout);
	}
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160721.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • H3C路由器动态NAT配置步骤全解析

    H3C路由器动态NAT配置步骤全解析3C路由器所支持的动态NAT地址转换主要包括:NAPT、NOPAT、EASYIP这三种模式。一般情况下,通过在接口上配置所需关联的ACL和内部全局地址池(当采用EASYIP进行配置时不用配置址池)即可实现动态地址转换,让内部网络用户根据ACL(可选配置)所配置的策略动态选择地址池中可用的IP地址进行转换。但要注意:有些H3C设备还支持仅仅通过判断流出接口报文的源地址,而不使用ACL的方式来实现出接口报文的动态地址转换。

    2022年10月10日
    3
  • Zabbix系列之入门介绍(一)

    Zabbix系列之入门介绍(一)

    2021年9月1日
    68
  • AES加密算法原理

    AES加密算法原理

    2021年4月9日
    165
  • 网页设计(新手入门)[通俗易懂]

    网页设计(新手入门)[通俗易懂]1.HTML的基本结构<!DOCTYPEHTML><html><head><title>百度一下,你就知道</title></head><body>……</body></html>HTML:是用于制作网页的超文本标记语…

    2022年4月19日
    44
  • Intellij IDEA汉化教程[通俗易懂]

    Intellij IDEA汉化教程[通俗易懂]1.首先下载汉化文件提取码:078j2.关闭IDEA,打开安装IDEA的位置并找到以下文件如果不知道IDEA所安装的位置,右键图标–>属性–>打开文件所在的位置–>再打开上一级目录,就可以找到了3.然后将下载好的汉化文件复制到以上目录(lib)4.重新打开IDEA,汉化就完成了…

    2022年5月27日
    112
  • java.exe 0xc000012d_应用程序无法正常启动 0xc000012d

    java.exe 0xc000012d_应用程序无法正常启动 0xc000012d应用程序无法正常启动0xc000012d,主要原因在于你的电脑缺少相对应的运行环境,可通过下载.netframework来解决。方法一:具体步骤如下1、打开百度输入”.netframework”,输入后单击搜索。2、接下来,我们找到下载地址并将程序下载到我们的计算机上。3、接下来,我们找到新下载的。在桌面上单击“运行”。4、安装之后,我们返回到刚刚打开错误的程序位置。最后,我们可以点击再次打开…

    2022年9月29日
    7

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号