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

    参考资料

  • 相关阅读:
    JavaScript节点介绍
    JavaScript DOM操作案例tab切换案例
    Binder系列10—总结
    Binder系列9—如何使用AIDL
    Binder系列8—如何使用Binder
    Binder系列7—framework层分析
    Binder系列2—Binder Driver再探
    Binder系列1—Binder Driver初探
    Binder系列3—启动ServiceManager
    Binder系列4—获取ServiceManager
  • 原文地址:https://www.cnblogs.com/PNIDEMOOO/p/10887317.html
Copyright © 2020-2023  润新知