安卓架构图
Android应用程序组件
Android应用程序主要包括4种组件:
- Activity(活动):可视化的用户界面;
- Service(活动):执行持续、耗时且无需用户界面交互的操作;
- Broadcast Receiver(广播):全局监听器,接收来自系统和应用程序的广播;
- Content Provider(内容提供器):共享的持久数据存储机制;
Activity
Activity用于提供可视化的用户界面组件,可以与用户进行交互来完成某项任务。
常用方法
方法 | 功能描述 |
---|---|
setContentView(int layoutResID) | 设置Activity界面布局 |
onCreate(Bundle savedInstanceState) | 第一次创建Activity时调用,必须在此处调用 setContentView() 来定义 Activity 界面的布局。 |
onStart() | 启动Activity时调用,调用完成后Activity 将进入“已启动”状态,并对用户可见。此回调包含 Activity 进入前台与用户进行互动之前的最后准备工作。 |
onStop() | 停止Activity时调用,当 Activity 对用户不再可见时,系统会调用 onStop() 。出现这种情况的原因可能是 Activity 被销毁,新的 Activity 启动,或者现有的 Activity 正在进入“已恢复”状态并覆盖了已停止的 Activity。在所有这些情况下,停止的 Activity 都将完全不再可见。系统调用的下一个回调将是 onRestart() (如果 Activity 重新与用户互动)或者 onDestroy() (如果 Activity 彻底终止)。 |
onDestroy() | 销毁Activity时调用,此回调是 Activity 接收的最后一个回调。通常,实现 onDestroy() 是为了确保在销毁 Activity 或包含该 Activity 的进程时释放该 Activity 的所有资源。 |
onRestart() | Activity由停止状态恢复时调用,onRestart() 会从 Activity 停止时的状态恢复 Activity。此回调后面总是跟着 onStart() 。 |
onResume() | Activity由暂停状态恢复时调用,此时,该 Activity 位于 Activity 堆栈的顶部,并会捕获所有用户输入。应用的大部分核心功能都是在 onResume() 方法中实现的。onResume() 回调后面总是跟着 onPause() 回调。 |
onPause() | 当 Activity 失去焦点并进入“已暂停”状态时,系统就会调用 onPause() 。当系统为您的 Activity 调用 onPause() 时,从技术上来说,这意味着您的 Activity 仍然部分可见,但大多数情况下,这表明用户正在离开该 Activity,该 Activity 很快将进入“已停止”或“已恢复”状态。如果用户希望界面继续更新,则处于“已暂停”状态的 Activity 也可以继续更新界面。onPause() 执行完毕后,下一个回调为 onStop() 或 onResume() ,具体取决于 Activity 进入“已暂停”状态后发生的情况。 |
setResult(int resultCode) | 返回数据给上一个Activity |
setResult(int resultCode, Intent data) | 范湖即将数据给上一个Activity |
startActivityForResult(Intent intent, int requestCode) | 携带数据并跳转至指定Activity |
startActivityForResult(Intent intent, int requestCode, Bundle options) | 携带数据跳转至指定Activity |
finish() | 结束当前Activity |
Activity状态转换
Activity的声明
除了要在Java代码中新建一个继承于Activity或者其他Activity的类,还要在manifest清单中添加Activity的声明。
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
XML资源文件
Android的资源可分为两大类:
- 原生资源:无法通过由R类进行索引的原生资源;
- 索引资源:通过R类进行自动索引的资源;
资源访问的方式:
- Java代码访问资源:
- 在XML文件中访问资源
目录结构
访问res资源
Java代码访问res下的资源:
R.resourceType.resourceName;
通过Resources类提供的接口访问;
访问assets原生资源
Java代码中通过AssetManager类访问assets原生资源;
通过Resources类提供的getAssets()接口获取AssetManager对象,在通过其接口来获取资源:
getResources().getAssets().open("xxxx");
在XML中使用资源
@[packageName:]resourceType/resourceName
Android常用的定义资源的XML文件有四种:
- strings.xml:用于定义文本内容的资源文件;
- colors.xml:用于定义颜色设置的资源文件;
- dimens.xml:用于定义尺寸的资源文件;
- styles.xml:用于定义主题和样式的资源文件;
文本资源文件
strings.xml文本资源文件
<resources>
<string name="app_name">My Application</string>
</resources>
Java代码中访问字符串
String appName = getString(R.String.app_name);
XML文件中访问字符串资源
@string/app_name
颜色设置资源文件
colors.xml颜色资源文件
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#008577</color>
<color name="colorPrimaryDark">#00574B</color>
<color name="colorAccent">#D81B60</color>
</resources>
颜色值的声明有以下四种方式:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
语法
<color name="color_name">#color_value</color>
Java代码中访问颜色
int color = getColor(R.color.colorAccent);
XML文件中访问颜色资源文件
@color/color_name
AndroidMainfest.xml清单文件
清单文件中通常包含以下六项信息:
- 声明应用程序的包名;
- 描述应用程序组件;
- 确定宿主应用程序进程;
- 声明应用程序拥有的权限;
- 定义应用程序所支持API的最低等级;
- 列举应用程序必须链接的库;
设置清单文件的属性时,需要遵守几项规则:
- 元素:在所有元素中只有和是必需的且只能出现一次的;
- 属性:元素的属性大部分是可选的但有少数属性是必须设置的;
- 定义类名:所有的元素名都对应其在SDK中的类名;
- 多数值项:如果某个元素有超过一个数值时,必须通过重复的方式来说明该元素的某个属性具有多个数值项,且不能将多个数值项一次性说明在一个属性中;
- 资源项说明:需要引用某个资源时,采用“@[packageName:]type:name”的格式进行引用;
- 字符串值:类似其它语言;
获取系统权限:
<uses-permission android:name="android.permission.xxxx" />
自定义权限使用元素声明:
<permission
android:label="权限名称"
android:description="@string/descriptionType"
android:protectionLevel="levelName"
android:icon="@drawable/icoResName"
android:name="PackageName"></permission>
权限级别的说明:
- normal——低风险权限
- dangerous——高风险权限
- signature——签名权限
- signatureOrSystem——签名或者系统权限
Android根据应用程序的组件及其组件当前的运行状态将所有的进程按照重要性程度从高到低分为了五个优先级:
- 前台进程;
- 可见进程;
- 服务进程;
- 后台进程;
- 空进程;
Application
通过扩展Application类,可以完成三项工作:
- 对Android运行时的广播的应用程序级时间做出响应;
- 在应用程序组件之间传递对象;
- 管理和维护多个应用程序组件所使用的资源;
Application类为应用程序的创建和终止、低可用内存和配置的改变提供了时间处理接口:
- onCreate()
- onLowMemory()
- onTrimMemory()
- onConfigurationChanged()
图片来自互联网侵删…