安卓四大基本组建
安卓四大基本组件对于安卓开发来说是很重要的,有许多功能都是基于安卓四大基本组建完成的,所以安卓四大基本组建是必须要学习的,下面就让我们来简单的介绍下安卓四大基本组建。
安卓四大基本组件分别是:
Activity、Service、Content Provider、BroadcastReceiver
一、Activity
Activity是安卓四大组建之一,那什么是Activity呢?Activity通常就是一个单独的屏幕(窗口),可以显示一些控件。
Activity之间通过Intent进行通信。
android应用中每一个Activity都必须要在AndroidManifest.xml配置文件中声明,否则系统将不识别也不执行该Activity。
在Activity里需要特别注意的是Activity的生命周期,以下这个链接便对Activity生命周期进行了介绍:安卓四大组建之Activity生命周期
二、Service服务
service用于在后台完成用户指定的操作。service分为两种:
started(启动):当应用程序组件(如activity)调用startService()方法启动服务时,服务处于 started状态。
bound(绑定):当应用程序组件调用bindService()方法绑定到服务时,服务处于bound状态。
开发人员需要在应用程序配置文件中声明全部的service,使用标签。
Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形用户界面。
Service组件需要继承Service基类。Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。
startService()与bindService()区别:
startService():
started service(启动服务)是由其他组件调用startService()方法启动的,这导致服务的onStartCommand()方法被调用。
当服务是started状态时,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经被销毁。
因此,服务需要在完成任务后调用stopSelf()方法停止,或者由其他组件调用stopService()方法停止。bindService() :
使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止,大有“不求同时生,必须同时死”的特点。
一个Service如果是通过bindService()启动的,那么它会一直存在到没有任何客户端与它保持连接为止,原因是可能有很多客户端与这个服务保持连接,这时如果某个链接被客户端主动断掉只会是Service的链接数减1,当减至0的时候这个Service就会被销毁。
三、Content Provider内容提供者
android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据。
只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。
ContentProvider实现数据共享。ContentProvider用于保存和获取数据,并使其对所有应用程序可见。这是不同应用程序间共享数据的唯一方式,因为android没有提供所有应用共同访问的公共存储区。
开发人员不会直接使用ContentProvider类的对象,大多数是通过ContentResolver对象实现对ContentProvider的操作。
ContentProvider使用URI来唯一标识其数据集,这里的URI以content://作为前缀,表示该数据由ContentProvider来管理。
四、BroadcastReceive广播接收器
你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如当电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或service来响应它们收到的信息,或者用NotificationManager来通知用户。通知可以用很多种方式来吸引用户的注意力,例如闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。
广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。
动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否被关闭,只要设备是开启状态,广播接收器也是打开着的。也就是说哪怕app本身未启动,该app订阅的广播在触发时也会对它起作用。
下面让我们简单讲解一下实现注册广播并接受广播的步骤:
在AndroidManifest中进行配置
<receiver
android:name=".MyReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="10"><!--优先级-->
<action android:name="com.yyyw.XX.broadcastreceiver.intent.action.MyReceiver" />
</intent-filter>
</receiver>
在广播接受者的中
public class MyReceiver extends BroadcastReceiver {
public static final String ACTION = "com.yyyw.XX.broadcastreceiver.intent.action.MyReceiver";
public MyReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
System.out.println("接受到消息!"+intent.getStringExtra("data"));
abortBroadcast(); /*中断广播,优先低的recevier将接收不到广播*/
}
}
Activity中
Intent intent = new Intent(MyReceiver.ACTION);
intent.putExtra("data", "LL");
/*sendBroadcast(intent);*/
sendOrderedBroadcast(intent,null);//设置权限的广播接收
registerReceiver(myReceiver,new IntentFilter(MyReceiver.ACTION));//注册
unregisterReceiver(myReceiver);//注销
以上便是安卓四大基本,希望对大家有所帮助,本人为初学者,文笔有限,有错漏欢迎提出,谢谢!