必威体育Betway必威体育官网
当前位置:首页 > IT技术

安卓Activity 跳转的标记深度思考FLAG_ACTIVITY_NEW_TASK,singleTask

时间:2019-08-06 23:42:07来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

flag_activity_new_task

知识储备参考地址:http://blog.csdn.net/ljz2009y/article/details/26621815

flag_activity_new_task
标记了FLAG_ACTIVITY_NEW_TASK,就一定会创建一个新的TASK吗,实验证明这是一个必要条件,还要结合taskAffinity来看,

A .如果和H5Activity 具有相应的亲戚存在了,那么只是会把H5Activity 加入的亲缘的TASK中

B. 如果和H5Activity 没有对应的亲缘关系的TASK,那么就会创建一个新的TASK了

public static void startActivity(context context, Bundle extras) { intent intent = new Intent(context, H5Activity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); if (extras != null) intent.putExtras(extras); context.startActivity(intent);}

应用场景举例

会想一下,我们打开升级面板(和当前应用的TASK亲缘关系肯定不同)的时候是不是增加了一个FLAG_ACTIVITY_NEW_TASK,从而避免升级界面加入当前应用的TASK,

从而避免升级过程中应用推出导致升级面板也退出的情况

singleTask


这个属性其实被会系统当作FLAG_ACTIVITY_NEW_TASK 理解,这里我们把亲缘关系设置为其他APP的包名(一个APP的默认亲缘关系就是包名),
那么另外一个APP的在进程中是维持在首页的(other app HomeActivity),和SencondActivity 属于相同的TASK,返回或者 finish掉都是回到 
上一个界面(HomeActivity,当然前提是另外一个HomeActivity得在任务栈中)

    <activity
        Android:name=".SenondActivity"
        android:launchmode="singleTask"
        android:taskAffinity="com.otherapp.package"
        >
    </activity>

public class SenondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedinstanceState) {
        super.onCreate(savedInstanceState);
        setcontentView(R.layout.activity_senond);
        findViewById(R.id.testTv2).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }
}
关于空taskAffinity的测试结论:

taskAffinity如果为空,那么空taskAffinity之间的TASK没有亲缘关系,展示如下

不为空有亲缘关系的展示如下

相关阅读

FLAG_ACTIVITY_NEW_TASK谨慎使用

前段时间在适配android权限的时候,遇到一问题1::在Activity的onCreate中去申请权限2:对申请结果进行判断,如果全部拒绝了权限,则弹出退

【完美解决系列】Activity context requires the FLA

在Service中启动Activity,会报错如下: Intent intent = new Intent(MyService.this, Main2Activity.class); s

Android Intent.FLAG_ACTIVITY_NEW_TASK的个人理解

首先分四部曲简单做一下说明 1.What(是什么):Intent类中的一个静态标志属性 public static final int FLAG_ACTIVITY_NEW_TASK = 0

分享到:

栏目导航

推荐阅读

热门阅读