zoukankan      html  css  js  c++  java
  • 基础篇:3.熟练掌握Activity的生命周期和使用方法

    1.Activity的生命周期

      只要谈到Activity的生命周期,就少不了会涉及到下面这张经典图:

    从图中可以看出一个完整的Activity生命周期涉及了onCreate、onStart、onResume、onpause、onStop、onRestart、onDestroy这7个方法,根据这7个方法结合上图,可以将Activity生命周期大致分为以下几种情况:

      (1)启动Activity:系统调用onCreate---onStart---onResume,系统开始进入running状态。

      (2)暂停Activity:当当前Activity被其它Activity覆盖或者设备屏幕被锁定,系统将调用onPause方法。

      (3)恢复Activity:当Activity从被覆盖状态恢复或者解锁屏,系统调用onResume方法,Activity重新进入running状态。

      (4)停滞状态:当系统从当前Activity转到新的Activity或者用户按下home键,系统调用onPause---onStop进行停滞状态。

      (5)再次进入running状态:当系统后退回到次Activity,系统调用onRestart---onstart---onRsume再次进入running状态。

      (6)摧毁Activity:当用户退出Activity,系统调用onPause---onStop---onDestroy,销毁Activity。

    以上这些都是里理论值,要想深入理解各种状态之间的转换,还得通过实践慢慢来体会。

    2.Activity使用方法

      (1)属性

        Activity在系统中作为一个对象存在,因此也支持很多XML属性,下面对一些常用的属性进行介绍:

        android:label    显示的名称

        android:icon  显示的图标

        android:screenOrientation    指定横竖屏

        android:exported    是否允许被其它成宿调用

        android:process     运行时所在的线程名

        <intent-filter>      设置Activity作为程序入口,即程序启动时显示的的第一个Activity。

      (2)启动

        startActivity()用来启动单个Activity,语法格式如下:

    startActivity(Intent intent)

        startActivities()用来同时启动多个Activity,语法格式如下:

    startActivity(Intent[] intents)

      (3)传值

      两个Activity之间进行传值,常用startActivityForResult、putExtra、getExtra方法,常用格式如下:

    intent.putExtra("变量名称","变量内容");
    startActivityForResult(intent,REQUEST_CODE);//必须携带一个请求标识
    
    //使用Bundle对象接收传递过来的内容
    Bundle bundle=intent.getExtras();
    String str=bundle.getString("变量名称");//解析Bundle对象
    intent.putExtra("返回值名称",“返回值内容”);
    setResult(RESULT_CODE,intent);//设置返回标识
    finish();//关闭当前Activity

      (4)启动模式

      启动模式设置:

    <activity android:name=".MainActivity" android:launchMode="standard" />

      Activity共有四种启动模式:

        a)stanDard:模式启动模式,每次激活Activity时都会创建Acitivity并放入任务栈中,该模式为默认启动模式。

        b)singleTop:如果任务栈顶刚好存在该实例,则直接调用,否则将新建实例并放入栈顶(即使栈中已存在该实例)。

        c)singleTask:如果栈中存在该实例,则直接调用,并置于栈顶。

        d)singleInatance:在一个新栈中创建该实例,其它应用程序也可以共享该实例。

      关于Activity的启动模式,还有比较深入的知识,截止现阶段为止,对这方面的知识接触不多,所以在此先不做什么讨论,后期有更深入了解后再进行总结。

  • 相关阅读:
    安卓开发学习——事件机制
    安卓开发学习——消息机制与异步任务
    安卓存储学习
    scrollTop, pageYOffset, scrollY 以及offsetTop 的区别
    BFC与IFC概念理解+布局规则+形成方法+用处
    JavaScript的作用域、作用域链和执行期上下文
    深入理解javascript原型和闭包系列
    【剑指Offer】剑指offer题目汇总
    CSS文件加载方式: @import 和 <link>
    jquery跨域:$.ajax 和$.getJSON
  • 原文地址:https://www.cnblogs.com/dream550/p/3878728.html
Copyright © 2011-2022 走看看