zoukankan      html  css  js  c++  java
  • android Activity生命周期

    Android系统会跟着所有运行的Activity对象,它将这些对性放在一个栈中进行管理。当一个新的Activity启动时,处于栈顶的Activity会暂停,而这个新的Activity会放入到栈顶,当这一新的Activity完成时,它会从栈中被移除,而先前的Activity会回到栈顶。如下图:



    Android的Activity生命周期如下图描述:

    onCreate:Activity启动时调用的第一个方法。在此方法中有一个参数,即Bundle,在首次启动时,这个参数为null,当程序由于内存的原因而被杀掉的时候,如果用户在onSaveInstanceState方法中做了相应的状态保存的操作的话,那个当他再次重新启动的时候,这个Bundle就包含了先前在onSaveInstanceState方法中保存的状态信息,以便Activity回到先前的状态。

    onStart:当用户对Activity可见时,此方法调用。

    onResume:在此方法中主要用于接收Activity数据和进行一些列的初始化操作。当Activity到达栈顶的时候,即将成为前台进程时,此方法被调用,虽然这一个时刻Activity肯能还不为用户所见,但这里是获取资源的最佳场所。

    onPause:当另一个Activity被移至栈顶的时候,当前Activity会收到它已在栈中被下移的通知,此时调用onPause方法。onPause方法是Activity在后台最后一次能够有机会进行清理工作、释放无需资源的地方。Activity的onPause方法必须要尽快的执行完成,因为前台的Activity必须要等到它执行完成之后返回后才能启动。当当前Activity失去焦点只有部分界面可见的时候,也会调用onPause方法。

    onStop:当另一个Activity被恢复而完全遮住当前Activity界面的时候,onStop被调用。

    onDestroy:Activity生命周期的最后一个方法,当调用finish方法或由于内存原因被系统杀死后会依次调用onPause——>onStop——>onDestroy方法,来结束Activity生命周期。

    注意:可以根据isFinishing方法来判断是由于调用了finish方法而结束Activity还是由于内存原因被系统杀死的。

        通过调用finish方法结束的Activity会从Activity栈中弹出,而由于系统内存原因结束的Activity不会从栈中弹出,依然会保留在栈中,因为在用户点击返回按钮的时候,它还 是有可能需要在恢复到前页面的。


    为了避免Activity对象被销毁,应该尽可能的在onPause方法中释放尽可能多的资源,那么转入后台时被销毁的可能性就越低。


    当Activity由于内存原因被销毁的时候,可以通过使用onSaveInstanceState方法将状态信心保存在一个Bundle对象中,当Activity恢复时此Bundle会做为参数传入到onCreate方法中,以便界面回复到之前的状态。

  • 相关阅读:
    送走2015,迎来2016
    Android-Volley网络通信框架(StringRequest & JsonObjectRequest)
    Mac上配置 Ruby on Rails和Git
    学习Javascript闭包(Closure)
    cocos2d-x 学习资源整理(持续更新...)
    android自己定义刷新类控件
    awk条件语句
    Leetcode 236 Lowest Common Ancestor of a Binary Tree
    Linux查看当前正在执行的进程
    Thinking in UML 学习笔记(三)——UML核心视图之类图
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3167685.html
Copyright © 2011-2022 走看看