美文网首页
Activity launchMode基础

Activity launchMode基础

作者: 霍霍9527 | 来源:发表于2020-06-16 16:08 被阅读0次

    打印acitivity任务栈信息:adb shell dumpsys activity activities
    打印正在运行的信息:adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'

    singleTask 不指定android:taskAffinity不会产生新的任务栈,并且被再次调用的时候回清除其上面的activity


    singleTask 界面A-B-A-B后的任务栈情况

    singleInstance模式会产生一个新的栈并且Activity只有他自己,在它上面打开新的界面,会调起原来的任务栈打开新界面,并且原来的task后返回的话也要等待原来的都返回才能在回到singleInstance的Activity。


    singleInstance模式原任务栈
    singleInstance模式自己任务栈

    1.Intent.FLAG_ACTIVITY_CLEAR_TASK 要配合Intent.FLAG_ACTIVITY_NEW_TASK使用 清除栈放自己

    val intent = Intent(applicationContext, ModeStandardActivity::class.java)
                intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
                startActivity(intent)
    

    2.Intent.FLAG_ACTIVITY_CLEAR_TOP 清除其顶层的activity

    3.android:taskAffinity="com.huo.taskSelf" 指定任务栈名字,置默认是包名
    格式是xxx.xxx.xxx 直接写xxx会报错
    The application could not be installed: INSTALL_FAILED_USER_RESTRICTED
    可以设置在清单文件application 和 activity标签,application控制所有的activity,activity控制自己,如果不设置默认是包名。
    android:taskAffinity="com.huo.taskSelf" 可以用来生成新的任务栈
    效果:在历史活动中会有两个活动一个是默认的,一个是指定名字的taskAffinity
    android:taskAffinity="com.huo.taskSelf" 生成新的任务栈,并且历史活动会看到两个activity

    必要条件缺一不可:
    • 清单文件activity标签配置android:taskAffinity名字不同
    • 开启activity模式Intent.FLAG_ACTIVITY_NEW_TASK or singleInstance or singleTask
      singleInstance:好理解本来就生成新的任务栈再加上名字满足条件
      singleTask:等同于提供了Intent.FLAG_ACTIVITY_NEW_TASK
      注意:如果打开了新的任务栈后点击返回可以回到上一个任务栈,但是如果回到桌面在点开各自的历史活动只会打开自己的。
      还有一种情况通过隐式意图跨应用调用,这个默认就实现了名字的不同,只要指定Intent.FLAG_ACTIVITY_NEW_TASK,就一定开启的两个task,不指定的话会在调用者的任务栈添加被调用的activity
     <intent-filter>
                    <action android:name="com.huo.task.activity"/>
                    <category android:name="android.intent.category.DEFAULT"/>
                </intent-filter>
    
    WechatIMG12.jpeg
    WechatIMG13.jpeg

    相关文章

      网友评论

          本文标题:Activity launchMode基础

          本文链接:https://www.haomeiwen.com/subject/tozlxktx.html