Android学习笔记—第二章 Android四大组件
第二章 Android四大组件
Activity(活动窗口):
Android程序中最基本的模块,为用户操作而展示的可视化用户界面。一个Android应用程序可以只有一个Activity,也可以包含多个Activity,数量及每个Activity的作用取决于应用程序及其设计。
(1)Activity的生命周期
创建→运行 onCreate onStart onResume
运行→销毁 onPause onStop onDestory
运行→停止(不可见 不可操作) onPause onStop
停止→恢复 onRestart onStart onResume
运行→暂停(可见 不可操作) onPause
暂停→恢复 onResume
备注:当Activity处于暂停或停止状态的时候,如果有更高优先级的应用需要内存时,该Activity所在应用可能被销毁。
(2)应用举例:数据持久化
存:onPause onStop onDestory
取:onCreate onStart onResume
Service(服务):没有界面,运行在后台
(1)Service的创建:
a. 创建一个类继承Service
b. 重写onbind()方法
c. 清单文件中注册 android:name="包名.类名"
(2)启动服务
Intent serviceIntent = new Intent(this,MyService.class);
startService(serviceIntent);
备注:第一次启动,会触发Service的onCreate和onStartCommand方法;如果服务已经存在,则多次点击启动服务,只会调用onStartCommand方法。
(3)停止服务
stopService(serviceIntent);
(4)绑定服务
bindService(serviceIntent,xxx,xxx);
a. serviceIntent:表示一个Intent对象;
b. 第二个参数:表示一个ServiceConnection对象,例如:
ServiceConnection conn =new ServiceConnection;
c. 第三个参数:Context.BIND_AUTO_CREATE 表示如果服务不存在,会自动创建一个服务。
(5)解绑服务
unbindService(conn);
(5)通过绑定调用Service中的方法
a. 创建一个类MyBinder继承Binder
b. 在该类中添加所需要调用的Service中的方法
c. 在onBinder()方法中,返回一个MyBinder类型的对象
d. 在Activity的onServiceConnected()方法中,得到IBinder类型对象
e. 将IBinder类型对象强转为MyBinder类型
BroadcastReceiver(广播接收器)
(1)广播:单项、群发,作为Android内部信息传输的机制。
(2)广播接收器的创建:
a. 创建一个类MyReceiver继承BroadcastReceiver;
b. 重写onReceive()方法;
c. 清单文件中注册
android:name="包名.类名"
(3)应用自己发送广播
//创建Intent对象
Intent intent = new Intent();
//设置过滤条件
intent.setAction("xxx");
//发送广播
sendBroadcast(intent);
(4)接收广播
a. 在清单文件中注册广播
<intent-filter>
<action android:name="xxx"/>
</intent-filter>
只要条件匹配,就能接收广播
b. 在代码中注册广播
//创建IntentFilter对象
IntentFilter filter = new IntentFilter();
//添加过滤条件
filter.addAction("xxx");
//创建MyReceiver对象
MyReceiver receiver = new MyReceiver();
//注册广播
registerReceiver(filter,receiver);
//注销广播
unregisterReceiver(receiver);
ContentProvider(数据共享)
一个用来提供数据共享的组件,主要将一些特定的应用程序数据提供给其他应用程序使用,这些应用程序数据可以存储于文件系统或者SQLite数据库中。在Android程序中,共享数据的实现需要继承自ContentProvider基类,该基类为其他应用程序使用和存储数据实现了一套标准方法。然而,应用程序并不直接调用这些方法,而是使用一个ContentResolver对象,并通过调用它的方法作为替代。ContentResolver对象提供了query、insert及update等方法,可以对共享数据执行各种操作。
(1)ContentResolver(内容解析者)示例:读取系统联系人
//创建ContentResolver对象
ContentResolver resolver = getContentResolver();
//使用query方法获取联系人信息
Cusor cusor = resolver.query(Phones.CONTENT_URI, null, null, null, null);
//遍历联系人信息
while(cursor.moveToNext()){
//根据字段名获取该字段的索引位置
int nameIndex = cursor.getColumnIndex(Phones.NAME);
int numberIndex = cursor.getColumnIndex(Phones.NUMBER);
//根据索引获取联系人信息
String name = cursor.getString(nameIndex);
String number = cursor.getString(numberIndex);
}
//关闭cursor对象
cursor.close();
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。