您的位置:首页 > 移动开发 > Android开发

Android四大组件

2016-07-13 10:40 387 查看
本篇博客主要记录Android四大组件,包含下面四类

一、Activity详解

二、Service详解

三、Broadcast Receiver详解

四、Content Provider详解

另:在各个组件中传递数据的Intent

一、Activity详解

1)Activity生命周期:



  一个完整的Activity生命周期是从 onCreate()--> onDestroy(); 

界面可视化生命周期:onCreate()-->onResume();

ActivityA跳转到ActivtyB:如果A没有执行finish操作,那么A会执行onPause(),onStop()方法,B会执行界面可视化生命周期。

按返回键后,B会执行onDestroy()方法,A会执行onRestart(),

一般来说在onCreate方法中做初始化操作,在onDestroy()做销毁操作

2)Activity启动模式

 

 standard 常规启动模式

 singleTop 单一顶部模式

 singleTask 单一任务栈模式

 singleInstance 单例模式

 在清单文件中通过launchMode配置

 

   standard默认启动模式:Activity通过先进后出的方式在任务栈排列。

  singleTop单一顶部模式:当Activity在顶部时,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。

  singleTask单一任务栈模式:当Acitivity已经存在栈中时,不会重新创建新的Activity,会把这个Activity提到顶部,并销毁调之间的Activity

  singleInstance 只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。

  

二、Broadcast Receiver

广播分为系统广播和自定义广播两种:系统广播为手机常见动作,自定义广播一般用来发送消息或者传递数据

广播事件流程:

1、注册广播事件

注册分为两种:

①.静态注册:在清单文件中注册广播接受者,创建receiver节点,广播接受者必须要继承BroadcastReceiver。在过滤器中设置要接受的
 事件

<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.MY_BROADCAST"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
②.动态注册:动态注册需要在代码中动态指定广播接收地址,通常会在Activity或者Server中注册,

MyReceiver receiver = new MyReceiver();

IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.MY_BROADCAST");

registerReceiver(receiver, filter);
当这个Activity销毁时需要把广播接受者一同销毁  

@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}  </span>


 2、发送广播事件

通过Intent来指定action,并且可以在发送广播的时候传递数据。

public void send(View view) {
Intent intent = new Intent("android.intent.action.MY_BROADCAST");
intent.putExtra("msg", "hello receiver.");
sendBroadcast(intent);
}


3、接受广播事件

public class MyReceiver extends BroadcastReceiver {

private static final String TAG = "MyReceiver";

@Override
public void onReceive(Context context, Intent intent) {
String msg = intent.getStringExtra("msg");
Log.i(TAG, msg);
}

}
在onReceive方法中,通过intent来接收传递的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: