android实训之四大组件
怀着疲惫的心情,进入四大组件的笔记整理。 众所周知,四大组件再很早很早以前就听烂了,但是一直没有进行具体的学习和整理。 趁着这个实训的机会,期望能够将这块知识点吃下去。
著名的四大组件是指: Activity,Service,ContentProvider,BroadCastReceiver
1.Activity活动
一个Activity代表一个屏幕。
它具有自己的生命周期。 具体的的周期就懒得看了。 我想说明的是,这些生命周秋就像多个入口,又硬件产生的系统中断实现。
它需要在AndroidManifest.xml进行注册。
AppCompatActivity 与 Activity都可以,效果相同。 AppCompatActivity提供了一些新的东西。
启动Activity的几种方式:
startActivity(new Intent());
startActivity(new Intent().setComponent());
startActivity(new Intent("android.intent.action.MAIN").setClassName());
通过设置<intent-filter>的action:name </>接收过滤。之后 startActivity(new Intent().setAction());
系统提供了一些常用的Actiity.
Activity间的交互方式:
startActivityForResult();
onActivityResult();
Bundle传递数据。 (它有大小限制,<0.5MB)
设置全屏的方法:
getActionBar.hide();
requestWindowFeature(Window.FEATURE_NO_TITLE);
再需要设置全屏的Activity标签内设置 theme= @android:style/Theme.NoTitleBar.FullScreen.
Activity,Window,View的关系:
内容已经脱离了理解范畴,直接复制一些重要的观点:
菜鸟地址: 这里
组件之Service,服务:
具有生命周期。换言之,他能够对中断做出响应
它跟线程概念类似,因此它与视图,或者说 模型不再同一个抽象层面。
他没有视图渲染的功能。
创建的方式:
startService();方法
bindService()方法。
需要在AndroidManifest.xml中注册
activity 与 service的绑定通过onbind()方法。
IntentService是继承于service 并处理异步请求的一个类,可以处理耗时操作。
AIDL: android interface definition language.
组件之BroadcastReceiver,广播接收者
广播类型:
标准型:完全异步执行的广播,所有的广播接收器几乎在同一个时刻接收到
顺序型: 同步执行的广播,同一时间只有一个广播能收到。
广播接收器注册:
静态: 在AndroidManifest中指定<IntentReceiver>可让程序在未启动的情况下接收到广播
动态: 指定IntentFilter,添加相应的Action,它必需在程序启动时才能接收到广播。
发送广播,sendBroadCast(),由 activity提供。
默认系统已经提供了很多的广播。
组件之ContentProvider,内容提供器
适用场景:
想在我们应用中访问别的应用
想将自己应用的一些信息暴露给其它应用。
需要在AndroidManifest中通过<provider> 进行注册。
系统已提供了相当部分的Content