美文网首页Android开发经验谈Android技术知识Android开发
正常情况下Activity生命周期----《android艺术探

正常情况下Activity生命周期----《android艺术探

作者: 绮怀先生 | 来源:发表于2018-04-20 22:31 被阅读57次

    正常情况下的Activity生命周期.

    • onCreate:第一个方法,加载布局资源,初始化数据
    • onStart:在后台,看不到,即将显示,onRestart之后会调用这个方法
    • onResume:在前台,和onStart同样可见,不同的是onStart在后台,onResume在前台
    • onPause:正在停止,正常情况下,onStop紧接着马上被调用.特殊情况:很快速的回到当前activity(onPause->onResume),很极端.在这个方法内可以做一些存储数据,停止动画等释放资源的动作,但是也不能太耗时,不然会影响新activity的显示(用户看来就是卡顿)
    • onStop: 即将停止.稍微重量级的回收工作,同样不能太好使.
    • onDestory: activity被销毁.生命周期的最后一个方法.
    • 用户回到已启动的activity:正常情况下,onStop->onRestart->onStart->onResume;如果高优先级的应用需要内存,Activity被杀死回收再回到该界面:onStop->onCreate->onStart->onResume,不经过onRestart,资源被回收了.
    • activity第一次启动:onCreate->onStart->onResume
    • 打开新activity或回到桌面:onPause->onStop ;特殊情况:当activity为透明主题时,不会执行onStop.
    • 点返回键:onPause->onStop->onDestory
    • 配对:onCreate,onDestory,只执行一次;onStart,onStop:设备亮屏,息屏;onResume,onPause:是否在前台.
    • onStart onResume, onPause,onStop的区别:含义不同,onStart,onStop是同activity是否可见角度回调.onResume,onPause是从是否在前台角度回调.
    • activity的启动过程:Instrumentation(处理activity启动请求,通过Binder向ActivityManagerService发请求),ActivityThread(同步activity状态的线程).AMS(在ActivityThread中维护ActivityStack)
    • 问题:A启动B,A的onPause,以及B的onResume,谁先执行? 答:在ActivityStack的resumeTopActivity方法中,we need start pausing the current activity so the one can resumed. 新activity启动前,栈顶activity需要onPause之后,新activity才能启动.onPause之后最终会在ActivityStackSupervisor中realStartActivityLocked中真正启动新acitivity.
    • A启动B: A onPause --> B onCreate --> B onStart--> B onResume --> A onStop. 由此可以看出,不要再onPause中执行重量级耗时操作,应该尽量在onStop中做操作,使新Activity尽快显示并切换到前台.

    《android艺术探索》读书笔记

    相关文章

      网友评论

        本文标题:正常情况下Activity生命周期----《android艺术探

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