第四章 Android开发三大基石—Activity、Service和Handler(1)

第四章 Android开发三大基石—Activity、Service和Handler

学习Android开发,首先就不得不学习Activity和Service这两个组件。Activity是有界面的程序,几乎承载着用户对应用程序的所有操作。而Service是没有界面的程序,它是所谓的服务,也叫后台程序。掌握好它们,是我们学习Android开发必不可少的环节。Handler是Android开发中最常用的消息机制,几乎所有应用程序都会使用Handler传递消息。可以说,想要学习Android应用开发,就不得不学习Activity、Service的开发,学习如何使用Handler机制。本章就来详细介绍如何利用它们进行Android开发。

4.1应用程序的接口—Activity窗口

Activity是Android中最基本也是最为常见的组件。它是Android的核心,是被用来与用户及Android内部特性交互的组件,在应用程序中用到的所有Activity都需要在AndroidManifest.xml文件中进行注册。那么Activity是怎样一种组件,它是怎么样进行显示交互的,一个Activity实例是如何被管理和运行起来的,Activity生命周期又是怎么样的?这些都是我们需要掌握的内容。

4.1.1Activity生命周期

在一个Android应用中,一个Activity通常就是一个单独的屏幕,一个Activity的生命周期也就是它所在进程的生命周期。在 Android中,Activity 拥有四种基本状态:

1)活动的(Active/Running) 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态;

2)暂停(Paused)  当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互;

3)停止(Stopped) 当Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stopped 状态;

4)待用(Destroyed) 被系统杀死回收或者没有被启动时处于 Destroyed状态。

Activity处于某一状态是由系统来完成的,我们无法控制。但是,当一个Activity的状态改变的时候,我们可以通过onXX()方法来获取到相关的通知信息。这样,我们在实现Activity的时候,就可以通过覆盖onXX()方法在需要的时候来调用它们,如图4-1所示:

图4-1 Activity生命周期

Activity的完整生命周期自第一次调用onCreate()方法开始,直至调用onDestroy()方法为止。Activity的可视生命周期自onStart()方法调用开始,直到应用的onStop()方法调用结束。在此期间,用户可以在屏幕看见Activity,尽管它也许并不位于前台或者也不与用户进行交互。Activity的前台生命周期自onResume()方法调用起,至相应的onPause()结束。在此期间,Activity位于前台的最上面并与用户进行交互。


经验分享:

以上所说的都是正常情况下的Activity的生命周期。需要注意的是,系统可能因为内存不足等原因杀死某进程,当进程被杀死以后,所有的Activity都会被杀死。此时,onPause()是唯一一个在进程被杀死之前必然会调用的方法,onStop() 和 onDestroy() 都有可能不被执行。

4.1.2 Activity

我们知道,我们是无法控制Activity状态的,那么Activity的状态又是按照何种逻辑来运作的呢?其实,Android 是通过一种 Activity 栈的方式来管理 Activity 的,一个 Activity 的实例的状态决定它在栈中的位置。处于前台的 Activity 总是在栈的顶端,当前台的 Activity 因为异常或其它原因被销毁时,处于栈第二层的 Activity 将被激活,上浮到栈顶。当新的 Activity 启动入栈时,原 Activity 会被压入到栈的第二层。一个 Activity 在栈中的位置变化反映了它在不同状态间的转换。Activity 的状态与它在栈中的位置关系如图4-2所示:

图4-2 Activity栈

一个应用程序的优先级是受最高优先级的Activity影响的。当决定某个应用程序是否要终结去释放资源,Android内存管理使用栈来决定基于Activity的应用程序的优先级。

时间: 2024-09-29 23:09:11

第四章 Android开发三大基石—Activity、Service和Handler(1)的相关文章

第四章 Android开发三大基石—Activity、Service和Handler(2)

4.1.3Activity的创建 在 Android 中创建一个 Activity 是很简单的事情,编写一个继承自 android.app.Activity的类,并在 AndroidManifest.xml文件中声明即可.下面,我们来看一个例子,我们创建一个MyActivity类继承自Activity,代码如下: public class MyActivity extends Activity {     @Override     public void onCreate(Bundle sav

第四章 Android开发三大基石—Activity、Service和Handler(4)

4.2千变万化的服务-Service开发 Service是Android系统中运行在后台.不和用户交互应用组件.它和Activity的级别差不多,只能在后台运行.每个Service必须在manifest文件中 通过<service>来声明. 4.2.1 Service的生命周期 Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service的时候,先后调用onCreate().onSta

第四章 Android开发三大基石—Activity、Service和Handler(6)

4.3 Android线程间的通信-消息机制 在Android程序运行中,线程之间或者线程内部进行信息交互时经常会使用到消息,如果我们熟悉这些基础的东西及其内部原理,将会使我们的Android开发变的更加容易,从而更好地架构系统.下面,就让我们来看看Android中的消息机制到底是怎样一回事吧. 4.3.1消息的传递-Handler的使用 在Android中,线程之间进行信息交互时经常会使用消息,那么,"消息"是在什么时候使用呢?它的工作原理又是怎么样的呢? 在解释这些之前,我们先来看

第四章 Android开发三大基石—Activity、Service和Handler(3)

4.1.5Activity交互-Activity跳转 一般的,我们的应用程序都不会简单到只有一个界面,而是会有很多个界面,这个时候我们就会创建多个Activity,然后根据业务逻辑在多个Activity之间进行跳转. 我们可以用切换Layout的方式进行手机页面间的转换.但是如果要转换的页面并不单单只是背景.颜色或文字内容的不同,而是需要对整个Activity进行置换,并将主控权交给新的Activity,那就不是仅靠改变Layout就能完成了,我们需要在这些Activity中进行跳转及数据传递.

第四章 Android开发三大基石—Activity、Service和Handler(7)

4.3.2Android中消息机制的详细分析 下面,我们就来详细分析一下Android中的消息机制. 熟悉Windows编程的朋友知道Windows程序是消息驱动的,并且有全局的消息循环系统.Google参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制.Android通过Looper.Handler来实现消息循环机制.Android的消息循环是针对线程的,每个线程都可以有自己的消息队列和消息循环. Android系统中的Looper负责管理线程的消息队列(Messa

第四章 Android开发三大基石—Activity、Service和Handler(5)

2)和Activity交互的本地服务 刚刚我们介绍的Service是不需要与Activity进行交互的,现在我们再来看看与Activity交互的本地服务.首先,我们新建一个BindLocalServide类继承自Serivce,代码如下: // import略 public class BindLocalServideextends Service { private static final String TAG = "localservice"; private MyBinder

Android学习笔记—第四章 Android开发组件2

第四章 Android开发组件2 列表类组件 (1)ListView组件:以垂直列表的形式列出需要显示的列表项 相关属性: a. android:divider  用于为列表视图设置分隔条,可以用颜色或者图片资源 b. android:dividerHeight  设置分隔条的高度 c. android:entries  通过数组资源为ListView指定列表项 d. android:footerDividersEnabled  设置是否在footerView之前绘制分隔条,默认为true. e

【Android的从零单排开发日记】之入门篇(四)——Android四大组件之Activity

在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页面类似.当然,这种相似性主要体现在设计思想上.在具体实现方面,Android的Activity组件有自己的设计规范,同时,它能够更简便地使用线程.文件数据等本地资源. 一.Activity 的生命周期 Activity 的生命周期是被以下的函数控制的. 1 public class Activity

2017-2018-2 20165331 实验四《Android开发基础》实验报告

实验四 <Android开发基础> 实验报告封面 课程:Java程序设计 班级:1653 姓名:胡麟 学号:20165331 成绩: 指导教师:娄嘉鹏 实验日期:2018.5.14 实验密级: 预习程度: 实验时间:15:35 - 17:50 仪器组次:31 必修/选修: 实验序号:4 实验名称:Android开发基础 实验目的与要求:①完成云班课中的检查点,也可以先完成实验报告,直接提交.注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明.实验报告中一个检查点要有多张截图. ②发