跳转Activity:taskAffinity和Intent F

2021-06-25  本文已影响0人  千夜零一

taskAffinity

每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task。

android:taskAffinity="" ,在AndoridManifest.xml文件中作为Activity的属性使用。

先检查包名是否相同,然后检查taskAffinity是否相同,如果都相同,intent的flag设置为flag_activity_new_task的activity与启动它的activity入同一个栈,否则建立新的task然后入栈。

Task

Task就是一个任务栈,里面用来存放Activity,第一个进去的(Activity)处于栈的最下面,而最后创建的(Activity)则处于栈的最上面。从Task中取出(Activity)是从最顶端取出,也就是说先进后出,后进先出。而Activity在Task中的顺序是可以控制的,在Activity跳转时用到Intent Flag可以设置新建Activity的创建方式。

Activity Intent FLAG

设置方式:

val intent = Intent()
//(1)设置单个flag时采用,setFlags()方法
intent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
//(2)设置多个flag时采用,addFlags()方法,进行添加
// intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.setClass(this,Intent1Activity::class.java)
startActivity(intent)

拓展

onUserLeaveHint():

作为Activity的生命周期回调的部分,会在用户决定将Acitivity放到后台时被调用。例如:当用户按下Home键,onUserLeaveHint就会被调用。但是当来电话时,来电界面会自动弹出,onUserLeaveHint就不会被调用。当该方法被调用时,他会恰好在onPause调用之前。

上一篇 下一篇

猜你喜欢

热点阅读