zoukankan      html  css  js  c++  java
  • android activity声明周期学习笔记

    android生命周期图:

    Activity继承了ApplicationContext;

    1:初次加载activity时顺序执行:onCreate()-->onStart()-->onResume()

    2:back键被按下之后会顺序执行:onPause()-->onStop()-->onDestroy()

    3:home键被按下之后会顺序执行:应用程序并没有销毁,onPause()-->onStop()(比如需要切换另一个应用程序,特殊情况:当新的activity采用透明主题,那么当前activity不会回调onStop())

    4:之后再次打开该应用程序,分别执行了onRestart()-->onStart()-->onResume()

    当需要在通过home键来回切换应用程序,并且保留每个应用程序view的相关内容的时候,需要重写activity的onPause()和onRestart()方法,用来保存切换应用程序之前的内容和恢复内容。

    其中看似类似的功能,onStart()&onStop  和  onResume()&onPause(),分别配对表示的意义不同而已, 前者从activity是否可见这个角度来回调的,后者从activity是否位于前台这个角度来回调的。。

    当两个activity切换时,第一个activity先pause,第二个activity才启动。所以在onPause()&onStop()中尽量不做耗时操作,从而使得新的activity尽快显示并切换到前台。

    activity启动:

    Instrumentation(Binder)----->AMS 请求(activityStack) 通过activityThread----->同步activity状态

    异常情况下的生命周期:

    1:在资源相关的系统配置发生改变导致activity被kill并重新创建:

    系统在activity异常终止的时候调用onSaveInstanceState和onRestoreInstanceState来存储和恢复数据,其它情况不会触发这个过程。

    2:资源内存不足导致低优先级的activity被kill:

    activity优先级:

    --前台activity:正在和user交互,优先级最高;

    --可见但非前台activity:比如activity中弹出了对话框,导致activity可见但是位于后台无法和用户直接交互;

    --后台activity:已经被暂停的activity,比如执行了onstop(),优先级最低

    如果一个进程中没有四大组件在执行,那么这个进程很快会被系统kill。

  • 相关阅读:
    《精通Ext JS 》
    《OpenStack部署实践》
    《方寸指间——移动设计实战手册》
    《产品经理那些事儿》
    C# 基于Aspose.Cells的数据导出到Excel
    mongodb中直接根据某个字段更新另外一个字段值
    C# mongodb中内嵌文档数组条件查询
    c# 在mongo中查询经纬度范围
    (转)MySql 获取所有级联父级或所有级联子级
    mongodb对数组元素及内嵌文档进行增删改查操作(转)
  • 原文地址:https://www.cnblogs.com/newcoder/p/6068603.html
Copyright © 2011-2022 走看看