android基础篇之四大组件

来源:互联网 发布:js返回并重载页面 编辑:程序博客网 时间:2024/05/18 02:00

Android四大组件使用

说明:由于知识点写得过于碎片化,仅供作者本人观看,起回忆作用

1.Activity(这里忽略AndroidManifest.xml的配置)

使用方式一:

Intent intent=new Intent(Activity.this,secondActivity.this);startActyvity(intent);

使用方式二:

startActivityForResult(intent,0);

并要要在当前Activity重写onActivityResult()方法:

@Overridepublic void onActivityResult(int requstCode,int resultCode,Intent intent){if(requstCode==resultCode==0){  Bundle data=intent.getExtras();  String values=data.getString("key");}}

在第二个Activity上:

Intent intent=getIntent();intent.putExtras("key","values");SecondActivity.this.setResult(0,intent);

2.Service使用:(这里忽略AndroidManifest.xml的配置)

使用方式一:

startService(intent);

使用方式二:

bindService(intent,conn,Context.BIND_AUTO_CREATE);

注意:继承Service时必须重写onbind()方法,并返回IBnder

3.Broadcast使用:

普通广播:
定义广播接收器:

public class receiver extends BroadcastReceiver{@Overridepublic void onReceiver(Context context,Intent intent){}}

(动态和静态注册方式,根据实际任选一种)
动态注册广播:

regasterBroadcast(receiver,new IntentFilter(ACTION));

静态注册广播:

<receiver android:name=".receiver">   <Intent-Filter>      <action android:name="ACTION"/>   </Intent-Filter></receiver>

发送广播:

sendBroadcast(new Intent(ACTION));

如果是动态广播需要在最后注意在Activity或Fragment的onDestory()方法中注销广播

unregisterReceiver(receiver);

有序广播:
定义广播接收器:同上;
静态注册有序广播:(priority的值越大,优先级越高)

<receiver android:name=".receiver">   <Intent-Filter android:priority="100">      <action android:name="ORDER_ACTION"/>   </Intent-Filter></receiver>

发送有序广播:

sendOrderBroadcast(new Intent(ORDAER_ACTION),null);

若要中断该广播传递给低优先级的接收器处理,使用:

abortBroadcast();

本地广播:(仅限应用内传播)
其中X表示LocalBroadcastManager.getInstance(context)
注册receiver:

X.registerReceiver(receiver,new IntentFilter(LOCAL_ACTION));

注销广播:

X.unregisterReceiver(receiver);

发送异步广播:

X.sendBroadcast(new Intent(LOCAL_ACTION));

发送同步广播:

X.sendBroadcastSync(new Intent(LOCAL_ACTION));

4.ContentProvider:

原理解析:ContentProvider实际上是对SQLiteOpenHelper的二次封装,通过UriMatcher将数据库中的表语Uri建立关联,用户通过Uri操作时,ContentProvider根据Uri对数据库的表进行增删改查。
由于ContenProvider篇幅过长,请查看ContentProvider详解。

0 0