美文网首页
关于Activity的launchModel-----处理tok

关于Activity的launchModel-----处理tok

作者: v587的毅哥 | 来源:发表于2021-06-07 16:47 被阅读0次

    不废话直接上代码,在application里添加如下方法:

    class App : Application() {
        companion object {
            lateinit var instance: App
        }
    
        override fun onCreate() {
            super.onCreate()
            instance = this
        }
    
        /**
         * 跳转到登录界面(同时关闭当前app里所有已经打开过的activity,前提是你没搞过singleTask和singleInstance这种)
         */
        fun startLoginActivity() {
            startActivity(
                Intent(this, LoginActivity::class.java)
                    .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK)
            )
        }
    }
    

    使用:

    //任何地方都可调用
    App.instance.startLoginActivity()
    
    另外说一下singleTopIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP),懂的人不需要往下看了
    • singleTop只有在目标activitylaunchModel设置为singleTop目标activity处于栈顶时才会调用onNewIntent(),否则仍然是新建activity(也就是当作standard来处理)
    • 对于launchModel都默认是standard的情况下
      比如启动流程为:Activity1 -> Activity2 -> Activity3 -> Activity4的情况下,想要干掉Activity2、Activity3、Activity4而直接回到Activity1可以使用startActivity(Intent(context,Activity1).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
    再补充一下singleTasksingleInstance
    • singleTask:在activitylaunchModel设置为singleTask时,其他应用app来启动这个activity会启动包含这个activity的整个app,按返回键会在包含这个activity的app里一层一层返回,当这个app最底的Activity被返回后,最后才回到启动者的app。
    • singleInstance:在singleTask的基础上单独用一个task来存放,与包含它的app都不在同一个task里哦。

    P.S. singleTop其实与standard是兄弟,与跟它长得更像的singleTasksingleInstance更疏远(疏远是指应用场景,singleTasksingleInstance基本是用作跨app使用,singleTopstandard一般是在本app内需求使用)。

    相关文章

      网友评论

          本文标题:关于Activity的launchModel-----处理tok

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