• Android进阶练习一


    1、有序广播:
    https://github.com/wuzhuojun/BroadcastExample

    说明:
    在manifest.xml设置的广播是静态注册,只要软件安装在手机上广播就能够生效。
    用代码实现的是属于动态注册,只有软件启动后广播才能够生效。
    除了能够接收系统的广播,也能够自定义广播。

    Android的广播按照接收顺序分两种类型:无序广播和有序广播。
    无序广播是所有注册者都能收到的广播。
    有序广播是能够指定接收顺序,层层下达,能够设置接收者的优先级,优先级高的先收到而且能够把传递的数据进行修改。

    另外广播还能够设置为本地广播,只能够是本进程才能收到的广播。

    2、定时任务(定时访问网络数据/闹钟)
    https://github.com/wuzhuojun/AlarmService
    说明:
    这是实现定时访问网络的一种手段,手机切换到后台仍然能够定时请求网络数据。可以作为消息通知拉数据的处理方式。

    主要原理:
    1、启动一个Service
    2、Service使用AlarmManager启动定时闹钟
    3、定时闹钟执行时发送一个广播事件
    4、自定义的广播接收者收到广播后执行网络请求动作,再次启动Service 回到第1步,一直循环

    3、跨进程通信
    https://github.com/wuzhuojun/AIDLService
    说明:
    APP有时候需要调用第三方APP的服务,那么就要用到跨进程通信(IPC)。
    由于是跨进程通信就要考虑到通信协议的问题,Android提供AIDL的解决方案。
    APP请求方是客户端,APP被访问方是服务端。
    首先要定义AIDL文件,编译后会生成接口文件(是一种代码自动生成的原理)
    服务端注册远程服务,实现AIDL生成的接口并作为Binder对象返回。

    客户端实现绑定服务,并定义ServiceConnection来接收服务端传过来的Binder引用,通过该引用能调用远程服务的功能。
    需要注意的是,客户端的AIDL与服务端的AIDL文件的命名空间要一致,否则通信会失败。

    4、ListView + 下拉刷新 + 分页加载更多 + 数据缓存 + Fresco图片缓存组件
    https://github.com/wuzhuojun/ListViewExample
    说明:
    使用PtrClassicFrameLayout组件来实现列表的下拉刷新,支持多种控件的下拉动作。https://github.com/liaohuqiu/android-Ultra-Pull-To-Refresh
    判断列表滚动的位置来判断是否已经上拉到底部,然后执行分页加载。
    网络请求用OKHttp https://github.com/square/okhttp
    数据缓存用的是ACache,轻量级只有一个Java文件,你值得拥有。 https://github.com/yangfuhai/ASimpleCache

    5、把ListViewExample改造MVP模式,增加了单元测试的练习
    https://github.com/wuzhuojun/MVPexample
    说明:
    以往MVC模式下,Activity及承担了View的角色同时也要处理业务逻辑,代码变得很臃肿。
    MVP模式把业务逻辑从Activity和Fragment拆分到Presenter。
    流程是:
    Activity/Fragment接收用户动作 =》 Presenter请求业务逻辑的调度 =》Model请求网络数据=》Model回调Presenter=》Presenter回调View=》View回调Activity/Fragment实现界面响应

    由于View、Presenter、Model都有对应的接口实现因此能够执行一路往上的回调动作。
    注意这里的Model是执行网络请求或者数据缓存的模块,而Bean是业务数据实体。

    看了关于重构方面的书再次认识到单元测试的重要性,它能够帮你更高效的编写正确的生产代码。
    执行单元测试时,看到一路的绿灯的感觉别提有多爽了。

  • 相关阅读:
    Python闭包
    使用python在极坐标中生成一条直线
    使用python生成c文件模板
    使用python转换markdown to html
    使用python转换编码格式
    安装PyQt5和Eric6
    2.深入剖析地址转化
    1.MMU功能解析
    37.C与汇编混合编程
    36.从汇编到C(bl1到bl2)
  • 原文地址:https://www.cnblogs.com/zhuojun/p/5824013.html
Copyright © 2020-2023  润新知