欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android Studio教程02-应用程序结构图及应用基础

程序员文章站 2022-04-09 18:59:39
[TOC] 1. Android应用程序开发技术结构图 一、 应用程序层 该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。 二、 应用程序框架层 该层是An ......

目录

1. android应用程序开发技术结构图

Android Studio教程02-应用程序结构图及应用基础

一、应用程序层

  • 该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等、友好共处。

二、应用程序框架层

  • 该层是android应用开发的基础,开发人员大部分情况是在和她打交道。应用程序框架层包括活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、资源管理器、位置管理器、通知管理器和xmpp服务十个部分。
  • 这一层是编写google发布的核心应用时所使用的api框架,开发人员同样可以使用这些框架来开发自己的应用,这样便简化了程序开发的结构设计,但是必须要遵守其框架的开发原则。

三、系统库和android运行层

  1. libraries: 不属于java,这个库是手机的常用功能

  2. android runtime:针对于android定制的java虚拟机和jdk包
  3. core librires: 类似于java的jdk包
  4. virtual machine:这是google自己开发的java虚拟机

四、linux内核

  • android核心系统服务依赖于linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型。linux内核也是作为硬件与软件栈的抽象层。

2.android的应用基础

应用组件是 android 应用的基本构建基块。每个组件都是一个不同的点,系统可以通过它进入您的应用。

2.1. android的四大组件:

1. android组件1: activity

  • activity 表示具有用户界面的单一屏幕。

2. android组件2: serice

  • 主要负责耗时的工作,后台运行,用户看不到

3. android组件3: content provider

  • 相当于图书馆一样,数据共享的组件
  • 这是安卓向外暴露数据的方法
  • 您可以将数据存储在文件系统、sqlite 数据库、网络上或您的应用可以访问的任何其他永久性存储位置。
  • 其他应用可以通过内容提供程序查询数据,甚至修改数据(如果内容提供程序允许)。

4. android组件4: broadcastreceiver

  • 监听手机发生的一切事情(手机要没电了,锁屏了...)
  • 用于监听系统行为

2.2.启动四大组件的方法

  1. 通过将 intent 传递到 startactivity()startactivityforresult()(当您想让 activity 返回结果时)来启动 activity(或为其安排新任务)。
  2. 通过将 intent传递到 startservice() 来启动服务(或对执行中的服务下达新指令)。 或者,您也可以通过将 intent 传递到bindservice() 来绑定到该服务。
  3. 通过将intent 传递到 sendbroadcast()、sendorderedbroadcast()sendstickybroadcast() 等方法来发起广播
  4. 通过在 contentresolver 上调用 query() 来对内容提供程序执行查询。

2.3. 清单文件androidmanifest.xml

android 系统启动应用组件之前,系统必须通过读取应用的 androidmanifest.xml 文件(“清单”文件)确认组件存在。 您的应用必须在此文件中声明其所有组件,该文件必须位于应用项目目录的根目录中。

其他功能有:

  • 确定应用需要的任何用户权限,如互联网访问权限或对用户联系人的读取权限
  • 根据应用使用的 api,声明应用所需的最低 api 级别
  • 声明应用使用或需要的硬件和软件功能,如相机、蓝牙服务或多点触摸屏幕
  • 应用需要链接的 api 库
  • 其他

1.声明组件

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
    <application android:icon="@drawable/app_icon.png" ... >
        <activity android:name="com.example.project.exampleactivity"
                  android:label="@string/example_label" ... >
        </activity>
        ...
    </application>
</manifest>

您必须通过以下方式声明所有应用组件:

  • activity 的 <activity> 元素
  • 服务的 <service> 元素
  • 广播接收器的 <receiver>元素
  • 内容提供程序的 <provider> 元素