Android四大组件之一:Activity总结(上)

来源:互联网 发布:visio 数据建模 编辑:程序博客网 时间:2024/04/28 20:34

** Activity

一.Activity的理解

1.Activity定义 :
An Activity is an application component that provides a screen with which users can interact in order to do something, such as dial the phone, take a photo, send an email, or view a map. Each activity is given a window in which to draw its user interface. The window typically fills the screen, but may be smaller than the screen and float on top of other windows.

Activity:可译为:活动,是android中的四大组件之一
它能提供能够实现用户操作并与之交互的界面

2.类比理解:想想Activity它类似于Java web中的什么呢?
答案:Servlet
功能:处理用户请求,并返回给用户一个UI
编码:都是一个接口,需要子类去实现,需要在应用的配置文件中注册

二.Activity的使用

1.如何创建一个Activity?
①继承于Activity
② 在androidmanifest.xml文件中注册
③ 设置Activity所对应的布局文件
④ 重写onCreate(),并加载布局文

2.如何启动一个Activity?

  • 一般启动: startActivity(Intent intent);

  • 带回调的启动
    ①startActivityForResult(Intent intent,int requestCode);
    ②新启动的activity中:setResult(int resultCode,Intent intent)
    ③回到最初的Activity:onActivityResult(int requestCode,int ResultCode,Intent intent)

3.如何结束一个Activity?
finish();

三.Activity的生命周期

1.Activity的生命周期方法
这里写图片描述

2.Activity的4种状态:
①运行状态: 可见也可操作
②暂停状态: 可见但不可操作
③停止状态: 不可见,但对象存在
④死亡状态: 对象不存在

3.不同状态切换时,哪些生命周期方法会被调用?
(1)界面从“死亡”–>“运行”
MainActivity()—onCreate()—onStart()—onResume()
( 2) 界面从“运行”–>“死亡”
onPause()—onStop()—onDestroy()
( 3) 界面从“运行”–>“停止”
onPause()—onStop()
( 4) 界面从“停止” –>“运行”
onRestart()–onStart()–onResume()
( 5) 界面从“运行”–>“暂停”
onPause()
( 6) 界面从“暂停” –>“运行”
onResume()

Activity只会占用部分窗口
日志:

启动:
10-10 09:40:21.172: E/MainActivity(2595): MainActivity()
10-10 09:40:21.562: E/MainActivity(2595): onCreate()
10-10 09:40:21.562: E/MainActivity(2595): onStart()
10-10 09:40:21.562: E/MainActivity(2595): onResume()
—>显示出了界面
回退:
10-10 09:41:37.452: E/MainActivity(2595): onPause()
10-10 09:41:38.092: E/MainActivity(2595): onStop()
10-10 09:41:38.092: E/MainActivity(2595): onDestroy()

启动第二个界面
10-10 09:43:05.562: E/MainActivity(2595): onPause()
10-10 09:43:05.592: E/MainActivity(2595): SecendActivity()
10-10 09:43:05.852: E/MainActivity(2595): onCreate()—
10-10 09:43:05.852: E/MainActivity(2595): onStart()—
10-10 09:43:05.852: E/MainActivity(2595): onResume()—
—secend界面
10-10 09:43:06.322: E/MainActivity(2595): onStop()

从第二界面回退到第一个界面
10-10 09:47:28.262: E/MainActivity(2595): onPause()—
10-10 09:47:28.282: E/MainActivity(2595): onRestart()
10-10 09:47:28.292: E/MainActivity(2595): onStart()
10-10 09:47:28.292: E/MainActivity(2595): onResume()
10-10 09:47:28.642: E/MainActivity(2595): onStop()—
10-10 09:47:28.642: E/MainActivity(2595): onDestroy()—

启动第二个界面(第一个界面还可见)
(10-10 09:51:58.452: E/MainActivity(5679): onPause()
10-10 09:51:58.482: E/MainActivity(5679): SecendActivity()
10-10 09:51:58.552: E/MainActivity(5679): onCreate()—
10-10 09:51:58.552: E/MainActivity(5679): onStart()—
10-10 09:51:58.552: E/MainActivity(5679): onResume()—

回退
10-10 09:54:10.452: E/MainActivity(5679): onPause()—
10-10 09:54:10.472: E/MainActivity(5679): onResume()
10-10 09:54:10.512: E/MainActivity(5679): onStop()—
10-10 09:54:10.512: E/MainActivity(5679): onDestroy()—

总结
* ① 只要执行了onResume(),就进入运行状态
* ② 最常需要重写的方法:
onCreate():提供Activity在创建时的初始化信息。
onDestroy():提供在Activity销毁前的必要的操作

四.Activity的任务栈结构

这里写图片描述
1.在Android中,系统用Task Stack (Back Stack)结构来存储管理启动的Activity对象
2.一个应用启动,系统就会为其创建一个对应的Task Stack来存储并管理该应用的Activity对象
3.只有最上面的任务栈的栈顶的Activity才能显示在窗口中

五.Activity的启动模式

在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来已存在的activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。

在android里,有4种activity的启动模式,分别为:
standard:
标准模式,每次调用startActivity()方法就会产生一个新的实例。这是默认的模式

singleTop:
如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例;如果不位于栈顶,会产生一个新的实例。

singleTask:
只有一个实例, 默认在当前Task中

singleInstance:
只有一个实例, 创建时会新建一个栈, 且此栈中不能有其它对象

问:在哪里设置Activity的启动模式?
答:在功能清单文件中,Activity标签内,设置其launchMode属性

0 0
原创粉丝点击