第一篇:Activity 详解

Android 开发的四大组件分别是:
1、活动(activity),用于表现功能;
2、服务(service),后台运行服务,不提供界面呈现;
3、广播接受者(Broadcast Receive),用于接收广播;
4、内容提供者(Content Provider),主要用于在不同的应用程序之间实现数据共享的功能。

学习要点:

1、Activity是什么?
2、使用Intent
3、Activity生命周期解析
4、Activity四种启动模式

一、Activity是什么

Activity是Android 四大组件之一,是使用的最为频繁的一种组件,中文翻译为活动
活动是一种可以包含用户界面的组件,主要用于和用户进行交互,也就是我们能看见的那些界面。

二、Intent的使用

Intent(意图)是Android通信的桥梁,在Android开发中起到很大的作用

startActivity(Intent)/startActivityForResult(Intent):来启动一个Activity
startService(Intent)/bindService(Intent):来启动一个Service
sendBroadcast:发送广播到指定BroadcastReceiver

2.1、向下传递数据

Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
intent.putExtra("main_data","你好");//键 值
 startActivity(intent);

接收数据

Intent intent=getIntent();
String data=intent.getStringExtra("main_data");

三、生命周期解析

Activity之所以能够成为Android四大组件之一,原因便是其具有非常灵活的生命周期回调方法,通过实现回调方法来管理Activity的生命周期对于开发强大而灵活的应用程序至关重要。Activity的生命周期直接受其与其他Activity,其任务和后台堆栈的关联的影响。

第一篇:Activity 详解_第1张图片
示例图.jpg

1、典型状态下的生命周期
a:onCreate()

  • 状态:表示Activity正在创建,这是生命周期的第一个方法。
  • 操作:可以做一些初始化工作,调用setContentView去加载界面布局资源、初始化Activity所需数据
  • 注意:此方法的传参Bundle为该Activity上次被异常情况销毁时保存的状态信息。

b:onStart()

  • 状态:表示Activity正在启动,可见但不在前台,不可与用户交互

c:onResume()

  • 状态:表示Activity获得焦点,此时Activity 可见且在前台并开始活动

d:onPause()

  • 状态:表示Activity正在停止
  • 操作:可做 数据存储、停止动画等操作。
  • 注意:Activity切换时,旧Activity的onPause会先执行,然后才会启动新的Activity。

e:onStop():

  • 状态:表示Activity 即将停止
  • 操作:可做稍微重量级回收工作,如取消网络连接、注销广播接收器等。
  • 注意:新Activity是透明主题时,旧Activity就不会走onStop。

f:onDestroy():

  • 状态:表示Activity 即将销毁
  • 操作:可以做回收工作和最终资源释放
  • 注意:新Activity是透明主题时,旧Activity就不会走onStop。

f:onRestart():

  • 状态:表示Activity 重新启动,Activity由后台切换到前台,由不可见到可见。

onStart()和onResume()、onPause()和onStop()的区别:onStart与onStop是从Activity是否可见这个角度调用的,onResume和onPause是从Activity是否显示在前台这个角度来回调的,在实际使用没其他明显区别。

2.Activity生命周期的切换过程

1、启动Activity:

  • onCreate() -> onStart() ->onResume.

2、打开新的Activity或回到桌面:

  • 原Activity onPause() -> 新Activity onCreate() ->onStart() ->onResume ->原Activity onStop()

3、返回原Activity

  • 新Activity onPause() ->原Activity onRestart() -> onStart() -> onResume() ->新Activity onStop() -> onDestory();

4、Activity1 基础上弹出对话框 或者透明主题 Activity2

  • 原Activity onPause() -> 新Activity onCreate() ->onStart() ->onResume (不会回调onStop)

5、关闭屏幕/按Home键

  • Activity2的onPause()-->onStop()-->Activity1的onStop()

6、点亮屏幕/回到前台

  • Activity2的onRestart()-->onStart()-->Activity1的onRestart()-->onStart()-->Activity2的onResume()

7、关闭对话框Activity2

  • Activity2的onPause()-->Activity1的onResume()-->Activity2的onStop()-->onDestroy()

8、销毁Activity1

  • onPause()-->onStop()-->onDestroy()

四、Activity四种启动模式

1、在说到启动模式前,要先了解一下Acitivyt的任务栈。

系统中是使用任务栈来存储创建的Activity实例,任务栈是一种“后进先出”的栈结构
若我们多次启动同一个Activity。系统会创建多个实例依次放入任务栈中。当按back键返回时,每按一次,一个Activity出栈,直到栈空为止。

例如当前Activity启动另一个Activity时,新Activity将被推到堆栈顶部并获得焦点。之前的Activity仍在堆栈中,但已停止。当活动停止时,系统将保留其用户界面的当前状态。当用户按下“ 返回” 按钮时,当前Activity将从堆栈顶部弹出(活动被销毁),之前的Activity将恢复(其UI的先前状态将恢复)。堆栈中的活动永远不会重新排列,只能在当前Activity启动时从堆栈推送和弹出到堆栈中,并在用户使用Back按钮退出时弹出.因此,后台堆栈作为“后进先出”对象结构操作。

第一篇:Activity 详解_第2张图片
示例图.png

2、Activity的四种启动模式
分别是:

  • standard(默认启动模式)
  • singleTop(栈顶复用模式)
  • singleTask(栈内复用模式)
  • singleInstance(单实例模式)
    第一篇:Activity 详解_第3张图片
    示例图.jpg
设置启动模式:

1、在 AndroidManifest.xml 通过给标签指定android:launchMode属性来选择启动模式。

 

2、 通过Intent设置标志位

 Intent intent = new Intent();
 intent.setClass(MainActivity.this, SecondActivity.class);
  intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
 startActivity(intent);
标记位属性 含义
FLAG_ACTIVITY_SINGLE_TOP 指定启动模式为栈顶复用模式(SingleTop)
FLAG_ACTIVITY_NEW_TASK 指定启动模式为栈内复用模式(SingleTask)
FLAG_ACTIVITY_CLEAR_TOP 所有位于其上层的Activity都要移除,SingleTask模式默认具有此标记效果

你可能感兴趣的:(第一篇:Activity 详解)