教材学习内容总结
第47章要点
要点1:Service
- 服务是在后台执行较长时间运行的一个组件。
Service类的回调方法
方法 | 说明 |
---|---|
onStartCommand(早期版本是onStart) | 当另一个应用程序组件调用服务的startService方法来启动服务时,会调用该方法 |
onBind | 当另一个应用程序组件调用服务的bindService方法以绑定到它的时候,会调用该方法 |
onCreate | 当服务初次创建的时候,会调用该方法 |
onDestroy | 当服务将要销毁的时候,会调用该方法 |
Service生命周期图
第48章要点
要点1:广播接收器
广播类型
- 标准广播:Normal broadcast,是一种完全异步执行的广播,在广播发出之后,所有的广播接收器几乎都会在同一时刻接收到这条广播消息,因此他们之间没有任何先后顺序可言。这种广播效率比较高,同时也意味着无法被截断。
- 有序广播:Ordered broadcast,是一种同步执行的广播,在广播发出之后,同一时刻只会有一个广播接收器能够接收到这条广播,当这个广播接收器中的逻辑执行完毕后,广播才会继续传递。所以此时的广播接收器是有顺序的,优先级高的广播接收器可以先接受到广播消息,并且前面的广播接收器还可以截断正在传递的广播,这样后面的广播接收器就无法收到广播消息了。
广播接收器的使用方法
创建广播接收器的方法很简单,我们只需要新建一个类,让它继承自BroadcastReceiver,并重写父类的onReceive()方法就行了。这样当有广播到来时,onReceive()方法就会得到执行,具体的逻辑可以在这个方法中进行处理。
第49章要点
要点1:AlarmManager
- AlarmManager这个类提供对系统闹钟服务的访问接口。
- 当闹钟响起,实际上是系统发出了为这个闹钟注册的广播,会自动开启目标应用。
- 注册的闹钟在设备睡眠的时候仍然会保留,可以选择性地设置是否唤醒设备,但是当设备关机和重启后,闹钟将会被清除。
- 在alarm的receiver的onReceive()方法被执行的时候,Alarm Manager持有一个CPU唤醒锁,这样就保证了设备在处理完广播之前不会sleep。
- 一旦onReceive()方法返回,Alarm Manager就会释放这个锁,表明一些情况下可能onReceive()方法一执行完设备就会sleep。
- 如果你的alarm receiver中调用了Context.startService(),那么很可能service还没起来设备就sleep了。
- 为了阻止这种情况,你的BroadcastReceiver和Service需要实现不同的唤醒锁机制,来确保设备持续运行到service可用为止。
注意:Alarm Manager主要是用来在特定时刻运行你的代码,即便是你的应用在那个特定时刻没有跑的情况。
第50章要点
要点1:内容提供器
- 如果你的数据需要和其他的应用程序共享,则需要一个内容提供者,它可以封装所存储的数据。如果数据只是由同一应用程序中的其他组件消费,则不需要使用一个内容提供者。
- 要创建一个内容提供者,需要扩展android.content.ContentProvider类。这个类提供CRUD方法,也就是创建、访问、更新和删除数据的方法。
Content Provider的方法
boolean onCreate()
初始化提供者
Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder)
查询数据,返回一个数据Cursor对象。其中参数selection和selectionArgs是外部程序提供的查询条件
Uri insert(Uri uri, ContentValues values)
插入一条数据。参数values是需要插入的值
int update(Uri uri, ContentValues values, String selection, String[] selectionArgs)
根据条件更新数据
int delete(Uri uri, String selection, String[] selectionArgs)
根据条件删除数据
String getType(Uri uri)
返回MIME类型对应内容的URI
代码托管
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 200/200 | 2/2 | 20/20 | |
第二周 | 300/500 | 1/3 | 17/37 | |
第三周 | 787/1287 | 1/4 | 15/52 | |
第四周 | 350/1637 | 1/5 | 16/68 | |
第五周 | 1049/2686 | 1/6 | 20/88 | |
第六周 | 1500/4186 | 1/7 | 18/106 | |
第七周 | 1718/5904 | 1/8 | 14/120 | |
第八周 | 200/6104 | 1/9 | 12/132 | |
第九周 | 800/6904 | 2/11 | 12/144 | |
第十周 | 800/7704 | 1/12 | 15/159 | |
第十一周 | 500/8204 | 1/13 | 20/179 | |
第十二周 | 100/8304 | 1/14 | 20/199 |
-
计划学习时间:18小时
-
实际学习时间:20小时