Activity相关总结

来源:互联网 发布:网络诈骗主题班会总结 编辑:程序博客网 时间:2024/05/22 17:39

1.目标Activity采用透明主题,当前Activity不会执行onPause方法

2.每个Activity实例可以属于不同的任务栈,在标准启动模式下,谁启动了这个Activity,那么这个Activity就运行在他的那个Activity的任务栈中。

3.当用Application的context启动standard的Activity时,会报错,原因是如2.所述,因为Application没有任务栈,加上FLAG_ACTIVITY_NEW_TASK标记启动,因为会创建一个新的任务栈。这个时候其实是以singleTask模式启动的。

4.onNewInstance方法,这个时候如果启动模式是非standard方式,则如果该activity存在,则会回调该方法。这个时候onCreate onStart 不会调用。

5.关于singleTask,当Activity以这种模式启动时,系统会先寻找是否存在该Activity需要的任务栈,如果不存在,则先创建任务栈,然后创建Activity的实例,如果存在任务栈,则看有无Activity的实例,如果存在则调用onNewInstance,否则创建实例。

4.TaskAffinity:当与singleTask一起使用时,具有该模式的Activity的目前任务栈的名字,待启动的Activity会运行在名字和TaskAffinity相同的任务栈中。
当与allowTaskReparenting结合使用时,当应用A的Activity启动应用B的某个Activity后,如果这个Activity的allowTaskReparenting属性为true时,当应用B被启动后,此Activity会直接从应用A的任务栈转移到应用B的任务栈。

5.当在AndroidMenifest和代码中同时添加启动模式,以在代码中添加的而为主。也就是代码添加的优先级高。
二者的各自局限性,在AndroidMenifest中注册的方式无法直接为Activity设定FLAG_ACTIVITY_CLEAR_TOP,而第二中,无法设置singleInstance。

6.Activity的fag
FLAG_ACTIVITY_NEW_TASK:指定singleTask启动模式,效果与在AndroidMenifest相同

FLAG_ACTIVITY_SINGLE_TOP:与singleTop相同

FLAG_ACTIVITY_CLEAR_TOP:当他启动时,在同一个任务栈中的所有位于它上面的Activity都要出栈。如果启动模式为singeTask则被启动的Activity存在,如果被启动的是standard模式的,则它连同它之上的Activity都要出栈。系统会创建新的Activity实例放入栈顶。

7.隐式启动:一个Activity可以有多个intent-filter,一个intent只要能匹配任何一组intent-filter即可成功启动对应的Activity

0 0