美文网首页
Activity:生命周期、启动模式

Activity:生命周期、启动模式

作者: 里予心 | 来源:发表于2021-09-06 17:26 被阅读0次

    Activity生命周期
    onCreate->onStart->onResume->Activity运行->新的Activity运行->onPause->onStop->onDestroy->Activity销毁
    onCreate() Activity被创建
    onStart() Activity可见
    onResume() Activity获取焦点
    onPause() Activity失去焦点
    onStop() Activity 不可见
    onDestroy Activity 被销毁
    Activity启动模式
    四种启动模式,standard, singleTask, singleTop, singleInstance。

    standard:标准模式,在当前的任务栈上创建新的Activity,不论之前有没有创建过该Activity。注意:ApplicationContext无法启动standard模式的Activity。

    singleTop:栈顶复用模式,如果该Activity在任务栈栈顶,即当前活动的Acitivty就是要创建的Activity,那么不会创建新的Activity。注意:该模式下复用Activity,系统会调用Activity的onNewIntent方法。如果该Activity不在任务栈栈顶,则创建新的Activity。
    一个常见的使用场景例如文章新闻推送消息点击跳转。

    singleTask:栈内复用模式,分两种情况,第一种情况:如果有任务栈里已经创建了该Acitiviy,直接销毁该Acitivity栈上面的所有Acitivity,无须新创建一个Activity;第二种情况:如果没有任务栈里已经创建该Activity,创建一个新的任务栈并在新栈上创建新Activity。注意:该模式下复用Activity,系统会调用Activity的onNewIntent方法。
    适用于会被其他程序调起但是不想显示之前界面的Activity,例如浏览器,不管被多少个应用访问网站功能调用,都显示的是主界面
    举例1
    BActivity android:launchMode="singleTask"
    AActivity CActivity DActivity android:launchMode="standard"
    AActivity -> BActivity -> CActivity -> DActivity -> AActivity -> BActivity则BActivity调用onNewIntent方法, CActivity, DActivity, 第二个AActivity调用onDestroy方法

    singleInstance:单实例模式,加强版的singleTask,当每次都直接创建一个新的任务栈,再在该新栈上创建新Activity。注意:singleInstance永远是单栈单Activity,永远使用一个全新的Task栈来加载该Activity实例。
    使用场景:APP经常调用的拨打电话、系统通讯录、系统Launcher、锁屏键、来电显示等系统应用。singleInstance适合需要与程序分离开的页面。例如闹铃提醒,将闹铃提醒与闹铃设置分离。singleInstance不要用于中间页面,如果用于中间页面,跳转会有问题,比如:A -> B (singleInstance) -> C,完全退出后,在此启动,首先打开的是B。

    相关文章

      网友评论

          本文标题:Activity:生命周期、启动模式

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