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。

  • 相关阅读:
    vertical-align:middle 垂直居中无效的原因
    meta标签的使用
    异常重试框架Spring Retry实践
    springboot 整合retry(重试机制)
    Centos7-Docker1.12开启守护进程(远程调用)
    Centos7安装docker与docker-compose
    Centos 下 Jenkins2.6 + Git + Maven Shell一件部署与备份
    Docker实战
    利用 Nginx 实现限流
    Feign拦截器应用 (F版)
  • 原文地址:https://www.cnblogs.com/newcoder/p/6068603.html
Copyright © 2011-2022 走看看