zoukankan      html  css  js  c++  java
  • android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    android Activity类中的finish()、onDestory()和System.exit(0) 三者的区别

    Activity.finish()

    Call this when your activity is done and should be closed. 

    在你的activity动作完成的时候,或者Activity需要关闭的时候,调用此方法。

    当你调用此方法的时候,系统只是将最上面的Activity移出了栈,并没有及时的调用onDestory()方法,其占用的资源也没有被及时释放。因为移出了栈,所以当你点击手机上面的“back”按键的时候,也不会找到这个Activity。

     

    Activity.onDestory()

    the system is temporarily destroying this instance of the activity to save space.

    系统销毁了这个Activity的实例在内存中占据的空间。

    在Activity的生命周期中,onDestory()方法是他生命的最后一步,资源空间什么的都没有咯~~。当重新进入此Activity的时候,必须重新创建,执行onCreate()方法。

     

    System.exit(0)

    这玩意是退出整个应用程序的,是针对整个Application的。将整个进程直接KO掉。

     

    写在最后

    在自己做的项目中,根据需要使用的时候finish()方法。只有三个页面,它们之间的跳转情况如下:

           主页面 < -- > 登录页  < -- > 注册页  

    其中注册页面中的一个按钮是“使用已有帐号登录”,事件是回到上一个Activity进行登录。当我对这个按钮不停的测试几次之后,按“back”键的时候,很遗憾,并不是按照理想的顺序:主页面 < --  登录页  < --  注册页  

    而是刚刚测试时候的逆向顺序:登录页  < -- > 注册页 跳完几个循环之后,才回到主页面。想想也是,Activity不停的产生,不停的塞到那个栈里面,一个一个的向外面拿,当然是这样的顺序啦。

    这里面Activity页面跳转动作事件完全是通过startActivity(new Intent(.....))来实现的。经过一些资料的查找,重新认识了上面的几个方法,根据此处的实际情况和需要,选择调用当前Activity对象的finish()方法。 

  • 相关阅读:
    学习java之路2
    学习java之路1
    【JavaSE】如何安装jdk以及java的环境配置(超详细) eclipse的安装和简单使用
    微课堂的使用体验
    Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
    docker概念
    Leetcode103_Binary-tree-zigzag-level-order-traversal
    二叉树广度优先遍历和深度优先遍历
    centos7 安装docker
    yum update 出错
  • 原文地址:https://www.cnblogs.com/scl1314/p/3677371.html
Copyright © 2011-2022 走看看