Android学习笔记(1)

来源:互联网 发布:台湾能独立吗 知乎 编辑:程序博客网 时间:2024/05/17 07:00
一、组件

1. 活动(Activities)
激活:Context.startActivity()或Activity.startActivityForResult()
关闭:finhish()

2. 服务(Services)
激活:Context.startService()
关闭:stopSelf() 或者 Context.stopService();

3. 广播接收者(Broadcast receivers)
Context.sendBroadcast()
Context.sendOrderedBroadcast()
Context.sendStickyBroadcast()

4. 内容提供者(Content providers)
内容提供者仅在响应ContentResolver提出请求的时候激活。


5. 清单(manifest)
当Android启动一个应用程序组件之前,它必须知道那个组件是存在的。
所以,应用程序会在一个清单(manifest)文件中声明它的组件,这个文件会被打包到Android包中。
这个.apk文件还将包括应用程序的代码、文件以及其它资源。
androidManifest.xml

1> 活动<activity>
1)name 指定了实现了这个活动的Activity类的子类
2)icon,label 指向了包含展示给用户的此活动的图标和标签的资源文件

4> 服务<service>

5> 广播接受者<receiver>
广播接收者既可以在清单文件中声明,也可以在代码中动态的创建(作为BroadcastReceiver对象)且调用Context.registerReceiver()方式注册到系统

6> 广播提供者<provider>



二、活动和任务


1、活动与任务概述
一个活动(activity)能启动另一个活动,包括定义在别的应用程序中的活动。

栈底的活动(根活动)是起始活动——一般来讲,它是用户在应用程序启动器(也称应用程序列表,下同)
中选择的一个活动。

栈顶的活动是正在运行的活动——它关注用户的行为(操作)。

当一个活动启动另一个,新的活动被压入栈顶,变为正在运行的活动。前面那个活动保存在栈中。

当用户点击返回按钮时,当前活动从栈顶中弹出,且前面那个活动恢复成为正在运行的活动。

栈中包含对象,假设有四个活动以这样的顺序排在栈中——A-B-C-D,现在又有一个C的实例,
则栈变成A-B-C-D-C,这两个C的实例是独立的。)栈中的活动从不会被重新排列,只会被压入、弹出,活动的调用顺序是固定的。


任务是一栈的活动,而不是清单文件中声明的某个类或元素,因此无法独立于它的活动为任务赋值。
整个任务的值是在栈底活动(根活动)设置的。例如,下节将讨论的“任务亲和度”,亲和度信息就是从任务的根活动中获取的。

一个任务的所有活动作为一个整体运行。整个任务(整个活动栈)可置于前台或发送到后台。

例如,假设当前任务有四个活动在栈中——三个活动在当前活动下面。
用户按下HOME键,切换到程序启动器,并选择一个新的应用程序(实际上是一个新的任务)。
当前任务进入后台,新任务的根活动将显示。

接着,过了一会,用户回到主屏幕并再次选择之前的应用程序(之前的任务)。那个任务栈中的所有四个活动都变为前台运行。

当用户按下返回键时,不是离开当前任务回到之前任务的根活动。相反,栈顶的活动被移除且栈中的下一个活动将显示。


三、活动的生命周期
一个活动有三个基本状态:
1. 激活状态或运行状态
这时它运行在屏幕的前台(处于当前任务活动栈的最上面)。这个活动有用户的操作的焦点。


2. 暂停状态
  这时活动失去焦点但是它对用户仍可见。也就是说,另一个活动在它的上面且那个活动是透明的或者没
  有覆盖整个屏幕,因此通过它可以看见暂停状态的活动。一个暂停的活动完全是活着的(它维护着所有的状态和成员信息,
  且仍然依附在窗口管理器),但是当内存极小时可以被系统杀掉。


3. 停止状态
  这时活动完全被其他活动掩盖。它仍然保留所有状态和成员信息,但是对用户它不可见,
  因此它的窗口时隐藏的且当其他地方需要内存时它往往被系统杀掉。






原创粉丝点击