Android - 四大组件
一、活动Activity
1、逻辑与视图分离,活动设置视图:setContentView(R.资源ID)
2、生命周期:onCreate、onStart、onResume、onPause、onStop、onDestroy
3、意图Intent:各组件之间交互的一种方式,如 startActivity(Intent实例)
4、Activity栈:
- 启动一个新的活动,它就会入栈并处于栈顶位置;
- 点击Back键或调用finish()方法销毁一个活动,处于栈顶的活动会出栈,前一个入栈活动就会重新处于栈顶的位置;
- 活动启动模式:standard、singleTop、singleTask、singleInstance ; 通过android:launchMode进行配置
standdard:默认启动模式,每次启动都会创建该活动一个实例,并入栈;
singleTop:启动活动时如果发现栈顶已经是该活动,则直接使用它,不会再创建新的活动实例;
singleTask:启动活动时会在栈中检查是否存在该活动实例,如果存在则直接使用该实例,并把该活动之上的所有活动统统出栈;
singleInstance:启用一个新的返回栈来管理该活动,可以用来解决不同应用程序共享活动实例(不管哪个应用程序访问该活动,都共用同一个返回栈);
5、生命周期实例:
- 开启活动:onCreate -> onStart -> onResume
- Home键:onPause -> onStop
- Back键(出栈):onPause -> onStop -> onDestroy
- 返回栈顶:onRestart -> onStart -> onResume
二、内容提供器ContentProvider
1、不同应用程序之间实现数据共享
2、访问其他程序中的数据:借助ContentResolver类,可以通过Context类的getContentResolver()方法获取到对象实例;
ContentResolver类提供了 insert()、update()、delete()、query()方法进行CRUD操作;
需要使用URI来定位内容,URI主要由两部分组成,权限(authority)和路径(path),例如:content://com.example.app.provider/table1
//读取手机联系人
private void readContacts(){
Cursor cursor=null;
try{
ContentResolver contentResolver=getContentResolver();
cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,null,null,null);
while(cursor.moveToNext()){
String displayName=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
String number=cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
}catch(Exception e){
}finally{
if(cursor!=null)
cursor.close();
}
}
3、创建自定义内容提供器
通过新建一个类继承ContentProvider类的方式创建自定义内容提供器
通过<provider>标签对内容提供器进行注册
<provider
android:name="com.example.test.MyContentProvider"
android:authorities="com.example.test.providers"
android:exported="true"
</provider>
内容提供器需要一种机制来区分各种URI,android使用类 UriMatcher 来实现此功能;
三、广播机制Broadcast http://www.cnblogs.com/null2/p/5113711.html
浙公网安备 33010602011771号