【Android基础笔记05】Activity生命周期以及Activity之间的传值

来源:互联网 发布:cms视频监控手机版 编辑:程序博客网 时间:2024/05/29 18:24


一、Activity初步认识:【创建、配置、启动Activity】

(一)、创建Activity:
  • 创建Activity:继承于Activity或其子类,重写onCreate()方法。

(二)、Activity的注册配置:
作为四大组件之一的Activity,必须要在AndroidManifest清单文件中进行注册。如果没有配置,而又在程序中启动了该Activity,将抛出异常(ActivityNotFoundException)。

注册配置的核心代码:


【附加思考】:
  1. 当在AndroidManifest清单文件中,设置多个页面都是默认启动页,会报错吗?如果不 报错,到底是执行哪个页面呢?
  2. 当在AndroidManifest清单文件中,如果不设置默认启动页,会报错吗?
(三)、启动Activity:
  1. 在Android应用里各组件之间通信使用Intent。一个Activity通过Intent来表达自己的“意图”。
  2. 常用有四种方式:
          方式一:   第一个参数 上下文对象 第二个参数是需要启动的activity的对象
  Intent intent=new Intent(MainActivity.this,OtherActivity.class);
  startActivity(intent);
           
           方式二 : Intent intent=new Intent(); 
  //指定当前的组件名和需要启动的组件名
  ComponentName componentName=new ComponentName(MainActivity.this, OtherActivity.class);
  intent.setComponent(componentName);
  startActivity(intent);

   方式三 : Intent intent=new Intent(); 
  intent.setClass(MainActivity.this, OtherActivity.class);
  startActivity(intent);
            
             //方式四 : Intent intent=new Intent(); 
  intent.setClassName(MainActivity.this, OtherActivity.class.getName());
  startActivity(intent);

     3.常用启动方式有两种:
  • startActivity();
  • startActivityForResult();


(四)、Activity之间交换数据:
  • 第一种方式:
    • 甲页面利用intent对象的putExtra()方法传值,乙页面利用getStringExtra()、getIntExtra()等系列方法来一一接收值;
  • 第二种方式:【常用】
    • 甲页面利用bundle对象来保存所有需要传递的数值,通过intent的putExtras()方法传值,乙页面利用intent对象的getExtras()方法返回bundle对象,将所有接收的数据放在bundle对象中,利用bundle的get系列方法一一去除数据。
        【备注:】如果甲页面使用putExtras()方法传值,则乙页面使用getExtras()接收值。如果甲页面使用putExtra()方法传值,则乙页面要使用getBundleExtra()方法接收值。

  • Activity之间是否可以传递对象呢?【掌握Serializable的用法】
    • Serializable的用法
    • Parcelable的用法

1、传递一般数据的核心代码:

(1)、MainActivity页面:

(2)、NextActivity页面:

2、传递对象数据的核心代码:

(1)、Person对象核心代码:

(2)、MainActivity页面:

(3)、ReceiverActivity 页面:

二、Activity——调用另一个Activity并返回结果:

(一)、概念:
甲页面调用乙页面,当用户在乙页面完成任务后,程序自动返回到甲页面,而甲页面必须能够获取到用户在完成乙页面后传递的数据结果。

(二)、做法:
与普通的页面交换数据不同的是,要使用startActivityForResult()方法来启动另一个Activity。

(三)、示例代码:

1、MainActivity页面:




2、ResultActivity 页面:



三、Activity——通过Application进行传值:

      
1.Application

 
2.,MainActivity


3.ResultActivity



四、Activity生命周期:
(一)、课堂引入:人的生命周期是怎么样的?
  • 胎儿
  • 婴儿
  • 儿童、少年、青年、中年
  • 突发变故
  • 老年
  • 死亡
(二)、Activity生命周期:
1、Activity一生中有七种不同的状态。
  • onCreate()
  • onStart()
  • onResume()
  • onPause()
  • onStop()
  • onRestart()
  • onDestroy()
【备注:】
A、七个生命周期组合:
  • onCreate、onStart、onResume:启动应用程序
  • onPause、onStop:失去焦点
  • onRestart、onStart、onResume:重新获得焦点
  • onPause、onStop、onDestroy :退出应用程序
B、七个生命周期按阶段划分:
  • onCreate() --- onDestroy()            完整生命周期    The entire lifetime
  • onStart() --- onStop()                    可见生命周期     The visible lifetime:
  • onResume() --- onPause()            前沿生命周期(焦点生命周期)    The foreground lifetime:


2、定义生命周期的作用:
  • ①当用户接一个电话或切换到另一个程序不会崩溃
  • ②当用户后台运行程序时不会销毁有价值的系统资源
  • ③当用户离开再返回你的应用时不会丢失用户的进程
  • ④当手机屏幕进行横竖屏切换的时候不会崩溃或者丢掉用户的进程
3、完整的生命周期图



(三)、实例代码操作
模仿以下操作,观察输出日志,找寻生命周期方法依次回调的规律:
  1. 打开主界面,后退键退出
  2. 打开主界面,进入第二个页面
  3. 打开主界面,模拟电话进入及挂机,再次显示主界面
  4. 打开主界面,HOME键退出
  5. 打开主界面,HOME键退出,再次启动app
  6. 打开主界面,点击该界面中捆绑退出事件的按钮后退出
  7. 打开主界面,切换横屏竖屏。
  • 生命周期执行的顺序:
04-23 03:51:29.750: I/MainActivity(741): ==MainActivity onCreate执行了04-23 03:51:29.759: I/MainActivity(741): ==MainActivity onStart执行了04-23 03:51:29.759: I/MainActivity(741): ==MainActivity onResume执行了04-23 03:52:04.780: I/MainActivity(741): ==MainActivity onPause执行了04-23 03:52:04.791: I/MainActivity(741): ==MainActivity onStop执行了04-23 03:52:04.791: I/MainActivity(741): ==MainActivity onDestroy执行了04-23 03:52:05.200: I/MainActivity(741): ==MainActivity onCreate执行了04-23 03:52:05.209: I/MainActivity(741): ==MainActivity onStart执行了04-23 03:52:05.329: I/MainActivity(741): ==MainActivity onResume执行了



【思考:】
两个Activity页面,点第一个中的按钮,进入第二个页面,此时点HOME退出程序。随后再次启动app,依次会执行哪些生命周期的回调方法。如果再点击返回,继续会执行哪些生命周期的回调方法?
请自己将依次调用的方法写在下面,不要借助机器调试。


















0 0
原创粉丝点击