Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >速读原著-Android应用开发入门教程(Android应用程序的概念性描述)

速读原著-Android应用开发入门教程(Android应用程序的概念性描述)

作者头像
cwl_java
发布于 2020-01-15 02:39:19
发布于 2020-01-15 02:39:19
1K0
举报
文章被收录于专栏:cwl_Javacwl_Java

第 5 章 Android应用程序的内容

5.1 Android应用程序的概念性描述

Android 应用程序包含了工程文件、代码和各种资源,主要由 Java 语言编写,每一个应用程序将被编译成Android 的一个 Java 应用程序包(*.apk)。

由于 Android 系统本身是基于 Linux 操作系统运行的,因此 Android 应用程序也运行于 Linux 环境中,它们具有以下的特点:

  • 在默认情况下,每一个应用程序运行于它们的 Linux 进程中;
  • 每个进程具有自己的虚拟机(VM),所以每个应用程序运行于独立的环境中;
  • 在默认情况下,每一个应用程序具有唯一的 Linux 用户 ID。通过设置权限让应用程序只对用户和应用程序本身可见,也有一些方法可以把它们暴露给其他的应用程序。

5.1.1.应用程序的组成部分

一般情况下,Android 应用程序由以下 4 种组件构成:

  • 活动(Activity);
  • 广播接收器(BroadcastReceiver);
  • 服务(Service);
  • 内容提供者(Content Provider)。

一个 Android 应用程序是一个包(Package),包中可能包含一个或者多个 Android 组件(component)。 (1)活动(Activity) 活动是最基本的 Android 应用程序组件,在应用程序中,一个活动通常就是一个单独的用户界面。每一个活动都被实现为一个独立的类,并且从活动(Activity)基类中继承而来,活动类将会显示由视图(View)控件组成的用户接口,并对事件(Event)做出响应。大多数的应用程序都会有多个用户界面,因此便会有多个相应的活动。

Android 的一个活动一般对应界面中的一个屏幕显示,可以理解成一个界面,每一个活动在界面上可以包含按钮、文本框等多种可视的 UI 元素。 (2)广播接收器(BroadcastReceiver) 广播接收器用于让应用程序对一个外部事件做出响应。例如:电话呼入事件、数据网络可用通知或者到了晚上时进行通知。 (3)服务(Service) 一个服务是一个具有一段较长生命周期但没有用户界面的程序。例如:一个正在从播放列表中播放歌曲的媒体播放器在后台运行。 (4)内容提供者(Content Provider) 应用程序能够将它们的数据保存到文件或 SQLite 数据库中,甚至是任何有效的设备中。当需要将数据与其他的应用共享时,内容提供者将会很有用。一个内容提供者类实现了一组标准的方法,从而能够让其他应用程序保存或读取此内容提供者处理的各种数据类型。

5.1.2.应用程序的生命周期

Android 系统中的不同组件具有不同的生命周期。Android 根据每个进程中运行的组件以及组件的状态把进程放入一个重要性分级(importance hierarchy)中。Android 进程的重要性分级,可以理解成执行的优先级。Android 进程的类型包括(按重要性分级排序): (1)前台(Foreground)进程 与用户当前正在做的事情密切相关,不同的应用程序组件能够通过不同的方法使它的宿主进程移到前台。当下面任何一个条件满足时,都可以考虑将进程移到前台。

  • 进程正在屏幕的最前端运行一个与用户交互的 Activity(它的 onResume()方法被调用);
  • 进程有一个正在运行的BroadcastReceiver(它的 BroadcastReceiver.onReceive()方法正在执行);
  • 进程有一个 Service,并且在 Service 的某个方法(Service.onCreate()Service.onStart()或者 Service.onDestroy()) 内有正在执行的代码。 (2)可见(Visible)进程 它有一个可以被用户从屏幕上看到的 Activity,但不在前台——其 onPause()方法被调用。例如:如果前台的 Activity 是一个对话框,以前的 Activity 隐藏在对话框之后,就可能出现这种进程。这样的进程很重要,一般不允许被杀死,除非为了保证前台进程的运行不得不这样做。 (3)服务(Service)进程 有一个已经用 startService() 方法启动的 Service,虽然这些进程用户无法直接看到,但它们做的事情却是用户所关心的(例如:后台 MP3 回放或后台网络数据的上传/下载)。因此,系统将一直运行这些进程,除非内存不足以维持所有的前台进程和可见进程。 (4)后台(Background)进程 拥有一个当前用户看不到的 Activity(它的 onStop()方法被调用),这些进程对用户体验没有直接的影响。如果它们正确执行了 Activity 生命周期,系统可以在任意时刻杀死进程来回收内存,并提供给前面 3 种类型的进程使用。系统中通常有很多这样的进程在运行,因此要将这些进程保存在 LRU 列表中,以确保当内存不足时用户最近看到的进程最后一个被杀死。 (5)空(Empty)进程 不包含任何处于活动状态的应用程序组件。保留这种进程的唯一原因是,当下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度。

以上所说的“进程”是从系统运行的角度考虑的,各种不同的进程可以理解成 Android 的各种组件的不同状态机(state machine)。如果从应用程序的代码以及运行情况考虑,可以关注 Android 的各种组件相对应的生命周期。

1. 活动的生命周期 活动是 Android 中最重要、最基础的组件,用户在界面上看到的一个个可以切换的屏幕界面就是 Android中的活动。活动的生命周期如图 1 所示。

  • 运行活动的情景:当一个活动被启动时,活动中的 onCreate()、onStart()和 onResume()这 3 个方法被依次调用,活动对应的界面出现在屏幕上。
  • 活动被“覆盖”的情景:Android 的活动一般都占据一个完整的屏幕,从当前活动启动另外一个活动时,另一个活动将被启动到前台(Foreground),当前活动转入后台(Background),这时活动的 onPasuse()方法将被调用,活动转入后台运行。如果活动变为不可见,还将调用 onStop()方法。在转入后台时,onStop()是否被调用取决于活动是否被完全覆盖,在新的活动有透明部分时,转入后台的活动依然“可见”,其他情况下(较多数的情况)活动均进入不可见状态(被完全覆盖)。
  • 活动被恢复的情景:当界面上最前面的活动退出后,它所覆盖的活动将被恢复,这时 onResume()方法将被调用,活动重新转入前台运行。
  • 活动完全退出的情景:当使用回退(Back)按钮退出活动时,onDestroy()方法将被调用,活动关闭。如果系统缺少内存时,也会杀死(kill)后台的活动,其中优先杀死不可见的活动,可见的活动一般不会被杀死。

2. 服务的生命周期 服务可以长时间运行,它的特点是没有可视化界面,服务的生命周期如图 2 所示。

使用 StartService 运行服务的情景:使用这种方法启动服务,服务的 onCreate()和 onStart()这两个方法将被调用,服务会在后台运行直到退出,退出时将调用 onDestroy()方法。

使用 bindService 运行服务的情景:使用这种方法启动服务,调用者(也就是服务的客户端)将获得和服务交互的类,通过其调用时服务的相关内容会处于活动状态。

3. 广播接收器的生命周期 广播接收器有一个单一的回调方法 onReceive(),当广播消息到达接收器时,Android 将调用这个方法,并传递给包含在这个消息中的 Intent 对象。

广播接收器只有在这个方法的执行过程中才处于活动状态,当 onReceive()返回后,广播接收器将不再处于活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Android程序设计基础
Android程序的入口被称为Main Activity,带有界面的Android应用程序一般需要从Main Activity启动。
小小工匠
2021/08/16
4070
Android多进程3
Android 系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要移除旧进程来回收内存。为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进程放入“重要性层次结构”中。必要时,系统会首先消除重要性最低的进程,然后是重要性略逊的进程,依此类推,以回收系统资源。
随心助手
2019/10/14
6810
重学安卓逆向:获得广告&弹窗静默卡
安卓应用程序的基本组成部分由四大组件构成,它们分别是Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供器)。这些组件共同协作,实现了安卓应用的各种功能。以下是对这四大组件的详细解释:
用户1423082
2024/12/31
1320
Android面试题(四大组件篇)[通俗易懂]
A会回调onPause()>>onStop(),透明则不会调用onStop(),对话框则不会调用onStop()
全栈程序员站长
2022/08/31
9380
Android面试题(四大组件篇)[通俗易懂]
Android四大组件详解
Android四大组件详解 Activity(活动) 概念 Service(服务) 概念 定义与作用 Content Provider(内容提供器) 介绍 作用 系统的Content Provider 自定义Content Provider Broadcast Receiver广播 概述 广播的作用 广播接收者的创建 广播接收者的类型 注册广播的两种方式 静态注册和动态注册的区别 有序广播和无序广播的区别 有序广播接收者们的优先级 有序广播的拦截和篡改 简单介绍:Android四大核心组件指的是 Acti
是阿超
2022/11/23
5.9K0
Android面试常问基础知识点(附详细解答)
1)Activity:用户可操作的可视化界面,为用户提供一个完成操作指令的窗口。一个Activity通常是一个单独的屏幕,Activity通过Intent来进行通信。Android中会维持一个Activity Stack,当一个新Activity创建时,它就会放到栈顶,这个Activity就处于运行状态。 2)Service:服务,运行在手机后台,适合执行不需和用户交互且还需长期运行的任务。 3)ContentProvider:内容提供者,使一个应用程序的指定数据集提供给其他应用程序,其他应用可通过ContentResolver类从该内容提供者中获取或存入数据。它提供了一种跨进程数据共享的方式,当数据被修改后,ContentResolver接口的notifyChange函数通知那些注册监控特定URI的ContentObserver对象。 如果ContentProvider和调用者在同一进程中,ContentProvider的方法(query/insert/update/delete等)和调用者在同一线程中;如果ContentProvider和调用者不在同一进程,ContentProvider方法会运行在它自身进程的一个Binder线程中。 4)Broadcast Receiver: 广播接收者,运用在应用程序间传输信息,可以使用广播接收器来让应用对一个外部事件做出响应。
Demo_Yang
2019/04/01
2.7K0
Android面试常问基础知识点(附详细解答)
精选Android中高级高频面试题:四大组件及Fragment原理
延伸:从整个生命周期来看,onCreate和onDestroy是配对的,分别标识着Activity的创建和销毁,并且只可能有一次调用; 从Activity是否可见来说,onStart和onStop是配对的,这两个方法可能被调用多次; 从Activity是否在前台来说,onResume和onPause是配对的,这两个方法可能被调用多次; 除了这种区别,在实际使用中没有其他明显区别;
Android技术干货分享
2020/04/21
2K0
精选Android中高级高频面试题:四大组件及Fragment原理
【Android开发基础系列】Android开发学习专题
Android学习路线指南 http://blog.csdn.net/singwhatiwanna/article/details/49560409?utm_source=tuicool&utm_me
江中散人_Jun
2023/10/16
3520
【Android开发基础系列】Android开发学习专题
Android开发之路--(2)--Android四大组件
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/47214197
Hankkin
2018/09/06
8300
Android四大组件全面解析,夯实基础。
为什么onDestroy没有执行? 用一句话概述 不要在onStop,onDestory中保存重要数据;最近任务栏清除app,app的onDestory不会掉用是因为该Binder调用是非阻塞的,导致App被杀死,所以onDestory没来得及调用 详细链接参考 https://blog.csdn.net/u013122625/article/details/77916482
Petterp
2022/02/09
9090
Android四大组件全面解析,夯实基础。
很全面的Android面试题
这些有些来源于网站、有些来源于自己的思考。可能有些问题网上有、可能有些问题对应的答案也有,有可能有些问题讲的不对,能指正的希望大家不吝指教。 Activity 什么是Activity 四大组件之一,一个和用户交的互界面就是一个activity,是所有 View 的容器 Activity 生命周期 生命周期描述的是一个类 从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法. 在这个过程中会针对不同的生命阶段会调用不同的方法 Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回
六月的雨
2018/05/14
6K0
【苦读官方文档】2.Android应用程序基本原理概述
Android应用程序是通过Java编程语言来写。Android软件开发工具把你的代码和其他数据、资源文件一起编译、打包成一个APK文件,这个文档以.apk为后缀,保存了一个Android应用程序所有的内容,Android设备通过它来安装对应的应用。
张拭心 shixinzhang
2022/05/06
6230
Android基础知识
答:Android四大组件有:Activity(活动)、Service(服务)、ContentProvider(内容提供者)、BroadcastReceiver(广播) 1、Activity是所有Android应用程序的门面,凡是在应用中你看得到的东西,都是放在Activity中的。 2、Service比较低调,它会一直在后台默默地运行,即使用户退出了应用,服务仍然是可以/可能继续运行。 3、ContentProvider内容提供者为应用程序之间共享数据提供了可能,比如共享通讯录联系人等 4、BroadcastReceiver广播允许你的应用中接收来自各处的广播消息,比如电话、短信等,当然你的应用同样也可以向外发出广播消息。
人不走空
2024/07/13
850
Android基础知识
Android基础_1 四大基本组件介绍与生命周期
    Android四大基本组件分别是Activity,Service(服务),Content Provider(内容提供者),BroadcastReceiver(广播接收器)。
shirayner
2018/08/10
1.6K0
Android基础_1    四大基本组件介绍与生命周期
app自动化面试题
Activity是Android的四大组件之一,也是平时我们用到最多的一个组件,可以用来显示View。官方的说法是Activity一个应用程序的组件,它提供一个屏幕来与用户交互,以便做一些诸如打电话、发邮件和看地图之类的事情,它提供屏幕进行交互。每个Activity都会获得一个用于绘制其用户界面的窗口,窗口可以充满哦屏幕也可以小于屏幕并浮动在其他窗口之上。一个应用通常是由多个彼此松散联系的Activity组成,一般会指定应用中的某个Activity为主活动,也就是说首次启动应用时给用户呈现的Activity。
找Bug
2022/07/22
1.5K0
面向初学者的 Android 应用开发基础知识
Android是一个基本上为手机构建的操作系统。它基于 Linux Kernel 和其他开源软件,由Google开发。它用于智能手机和平板电脑等触摸屏移动设备。但现在这些都用于 Android Auto 汽车、电视、手表、相机等。它一直是智能手机最畅销的操作系统之一。Android OS 由Android Inc开发。谷歌在 2005 年收购了它。为这些智能手机构建了各种应用程序(应用程序),如游戏、音乐播放器、相机等,以便在 Android 上运行。Google Play 商店拥有超过 330 万个应用程序。该应用程序是在称为Android Studio 的应用程序上开发的。这些可执行应用程序通过称为APK(Android Package Kit)的包或包安装。
海拥
2022/09/21
1.4K0
面向初学者的 Android 应用开发基础知识
Android面试题大全
Android面试题总结 Android四大组件 Activity(活动) 概念 Service(服务) 概念 定义与作用 Content Provider(内容提供器) 介绍 作用 系统的Content Provider 自定义Content Provider Broadcast Receiver(广播) 概述 广播的作用 广播接收者的创建 广播接收者的类型 注册广播的两种方式 静态注册和动态注册的区别 有序广播和无序广播的区别 有序广播接收者们的优先级 有序广播的拦截和篡改 Android类加载器 An
是阿超
2022/11/02
1.4K0
Android四大组件详解
Android四大组件分别为activity、service、content provider、broadcast receiver。
用户7557625
2020/07/15
6.7K0
【Android】期末选择题和判断题
1 关于sendBroadcast()方法说法正确的是( A ) A、该方法是发送一条无序广播 B、该方法是发送一条有序广播 C、该方法即是发送有序广播也可以发送无序广播 D、以上说法都不正确
天天Lotay
2022/12/02
1.5K0
Android中各组件的生命周期
1、Activity生命周期图 二、activity三种状态 (1)active:当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于活动状态,同一个
mukekeheart
2018/02/27
8730
Android中各组件的生命周期
相关推荐
Android程序设计基础
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档