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

posted @ 2016-01-20 12:28  chenyizh  阅读(157)  评论(0)    收藏  举报