您的位置:首页 > 移动开发 > Android开发

android笔记之activity生命周期和启动模式

2017-12-24 16:45 337 查看

Activity生命周期

void onCreate()

Activity已经被创建完毕

void onStart()

Activity已经显示在屏幕,但没有得到焦点

void onResume()

Activity得到焦点,可以与用户交互

void onPause()

Activity失去焦点,无法再与用户交互,但依然可见

void onStop()

Activity不可见,进入后台

void onDestroy()

Activity被销毁

void onRestart()

Activity从不可见变成可见时会执行此方法

使用场景

Activity创建时需要初始化资源,销毁时需要释放资源;或者播放器应用,在界面进入后台时需要自动暂停

完整生命周期(entire lifetime)

onCreate–>onStart–>onResume–>onPause–>onStop–>onDestory

可视生命周期(visible lifetime)

onStart–>onResume–>onPause–>onStop

前台生命周期(foreground lifetime)

onResume–>onPause

Activity的四种启动模式

每个应用会有一个Activity任务栈,存放已启动的Activity

Activity的启动模式,修改任务栈的排列情况

standard 标准启动模式

singleTop 单一顶部模式

如果任务栈的栈顶存在这个要开启的activity,不会重新的创建activity,而是复用已经存在的activity。保证栈顶如果存在,不会重复创建。

应用场景:浏览器的书签

singeTask 单一任务栈,在当前任务栈里面只能有一个实例存在

当开启activity的时候,就去检查在任务栈里面是否有实例已经存在,如果有实例存在就复用这个已经存在的activity,并且把这个activity上面的所有的别的activity都清空,复用这个已经存在的activity。保证整个任务栈里面只有一个实例存在

应用场景:浏览器的activity

如果一个activity的创建需要占用大量的系统资源(cpu,内存)一般配置这个activity为singletask的启动模式。webkit内核 c代码

singleInstance启动模式非常特殊, activity会运行在自己的任务栈里面,并且这个任务栈里面只有一个实例存在

如果你要保证一个activity在整个手机操作系统里面只有一个实例存在,使用singleInstance

应用场景: 电话拨打界面
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐