20189217 2018-2019-2 《移动平台开发实践》第12周学习总结

教材学习内容总结

第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小时

参考资料

原文地址:https://www.cnblogs.com/PNIDEMOOO/p/10887317.html