四大组件
2017-11-04 本文已影响1人
我是无穷
activity
- Android onstart 还不可见,onresume才可见,onpause可见,不能执行耗时,因为执行完成此方法,才能执行下一个的onresume.
- 横竖屏切换,会调用onsaveinstance, 在onstop之前,调用onrestoreinstance 在onresume之后;切换的生命周期;
service
- 分类:前台服务(在通知栏可看到)和后台服务,本地服务和远程服务(process=remoe)
- 启动方式:startService和bindService,也可混合启动;
结束方式:stopService,stopSelf, unbindservice;如果开启了线程,记得在ondestroy中interrupt掉; - 生命周期:onCreate-onStartCommand(onBind)-(-onUnbind)onDestroy;
- 前台服务可以使用TaskStackBuilder,可以点通知打开activity后,按返回键退回到指定页面,而不是直接推到桌面;
broadcast
- 广播本质:观察者模式
- 广播分类:系统广播、普通(全局)广播、本地广播;
- 注册方式:静态注册和动态注册;
静态注册的几个属性:Intent-filter中的action-name;exported-ture能接收其他app发送的广播,默认值由有无intentFilter决定;permission-若不为空,则发送者必须携带此权限才能启动此receiver;process-四大组件都可以指定是否要独立进程; - 发送广播的方式:sendBroadcast,sendOrderedBroadcast;
粘性广播已经被废弃; - onReceive不能执行耗时操作,否则ANR;一般是启动service或者发通知;
contentProvider
- 只是一个封装,具体的用什么(file、sqlite等)保存保存数据,由用户决定;
- android提供了一个操作provider的工具contentResolver;
- 提供了provider的3大工具:contentUris, UriMatcher, ContentObserver;
- 优点:解耦了存储方式和访问方式,安全的共享数据;