安卓开发
用户ID:每个应用拥有系统为其分配的唯一的用户ID
进程:每个应用运行在属于它的进程中
组件:实现应用的各种功能
Intent:消息对象,用来传递数据或者请求执行其他组件提供的动作
Intent使用场景
启动activity活动页
startActivity()
startActivityForResult():返回结果,用onActivityResult()回调函数处理结果
启动service后台服务
startService()
启动broadcast
两种类型的Intent
显式intents,指定要启动组件的名字,启动的组件属于相同应用
隐式intents,指定要执行的动作,启动的组件属于不同的应用
构造Intent
Componect name:组件名字
Action:动作和动作类型常量
Data:数据,Uri对象和数据的MIME类型,数据的类型取决于所要执行的动作
Category:分类
Extras:附加
Flags:标记
Activity:屏幕上的窗口
Activity的操作
创建Activity
创建Activity的子类并实现回调函数
创建用户界面:在onCreate()中使用setContentView()设置布局
布局管理器ViewGroup
控件View
在清单文件中声明acivity和intent filter
启动Activity
startActivity()
startActivityForResult()
关闭Activity
Activity的finish()方法
finishActivity()函数
Activity的生命周期
三种状态
Resumed状态:处于屏幕顶层获得用户焦点
Paused状态:被其它窗口遮挡,部分仍可见,仍存活于内存
Stopped状态:被其它窗口遮挡,完全不可见,仍存活于内存
六个回调函数
onCreate()
onStart()
onResume()
onPause()
onStop()
onDestroy()
三个内循环
整个生命期:在onCreate()和onDestroy()之间,用于资源的申请和释放
可视生命期:在onStart()和onStop()之间,用于维护资源
前台生命期:在onResume()和onPause()之间
Activity状态的保存
onSaveInstanceState():销毁前调用写入要保存的状态
onRestoreInstanceState():创建时读入已保存的状态,重写时要先调用父类的该函数
或用onCreate()读入已保存的状态
清单文件:有关应用的信息,系统运行应用前会读取清单文件里的信息
元素:大多数元素对应Java对象
<manifest>:必须
<application>:必须
属性:属性名都以android:开头
声明类名:表示定义一个子类,启动组件时创建该子类的实例,无类名则创建的是基类的实例
<service android:name="com.example.project.SecretService" . . . >
<service android:name=".SecretService" . . . >:元素<manifest>须指定package属性
多值:一个属性对应一个值,指定多个值时元素也要重复
引用值
@[package:]type/name:值来自资源
?[package:]type/name:值来自主题
字符串值:使用\\转义字符,\\n表示换行
资源:每个资源有一个唯一的资源ID
好处
资源与代码相分离
不同配置选择不同资源
资源的提供
资源文件夹:res/
资源的类型:res/下的子目录
animator/
anim/
color/
drawable/
mipmap/
layout/
menu/
raw/
values/
xml/
默认资源与可选资源
资源别名
资源的访问:通过引用资源ID来使用资源
R类:记录了资源文件夹下所有资源的资源ID
资源ID:包括资源类型(作为R的子类)和资源名
两种引用方式
在代码中:[<package_name>.]R.<resource_type>.<resource_name>
R.string.hello,其中string是资源类型,hello是资源名
通过资源ID取回资源:getResources().getText(R.string.main_title)
在XML中:@[<package_name>:]<resource_type>/<resource_name>
@string/hello
引用主题的属性资源:?[<package_name>:][<resource_type>/]<resource_name>
设备要求
系统权限