Coder Social home page Coder Social logo

tangmin1010 / weatherapp Goto Github PK

View Code? Open in Web Editor NEW

This project forked from caobaokang419/weatherapp

0.0 2.0 0.0 1.38 MB

基于MVVM框架的高德天气APP:This repository contains a sample amap weather app that implements MVVM architecture using LiveData, ViewModel, Room, DataBinding, WorkManager, and Retrofit2&Rxjava2.

Java 100.00%

weatherapp's Introduction

基于MVVM框架的高德天气APP:


开源说明:

  • 开源动机:HomeWork,利用私人时间敦促自己持续进行:工作地点&工作时间&工作内容以外的技术学习;
  • 开源背景:借助高德天气开放的API平台(作为后台),借助网络开放资源,化简为繁,探索主流的框架开发方式;
  • 项目分支:WeatherDemo 迁移至此,独立维护。

博客专栏:


Screenshots:


功能点实现说明:

  • 高德天气查询:Get&Post方式可以正常返回查询高德天气数据并UI显示;
  • 配置文件下载:借助Xutils3,下载并存储高德天气城市配置文件
  • 配置文件解析:解析存储本地存储高德adcode和城市信息对照表,用于本地天气动态查询api调用;
  • 应用权限申请:sdk23后,需动态申请应用权限,实现封装权限动态申请机制;
  • 国内消息推送:集成Umeng推送平台,海外移至使用Cloud Message(云消息)
  • 云端配置方案:国内TBD,海外移至使用Remote Config(远程配置)
  • 公共数据接口:借助ContentProvider,提供天气数据(DB方式)& 配置属性(SharedPreference方式)的数据访问API,供第三方应用访问使用;
  • 数据缓存功能:1. 实现封装磁盘缓存;2. 实现数据内存缓存;
  • 任务管理功能:1. 封装线程池ThreadPoolExecutor;2.泛型的TaskExecutor机制实现;
  • 异步任务管理:AsyncTask HandlerThread WorkManager不同方式,实现不同场景的异步任务需求;
  • 天气定期更新:1. 定时启动后台任务;2.轮询查询城市队列:实现定时&批量更新城市天气数据。
  • 汉字拼音转换:集成汉字转拼音工具(第三方pinyin4j),实现城市列表拼音搜索功能;
  • 数据过滤功能:添加数据过滤演示功能,实现不同场景时,抽象出来的请求+返回+显示流程;

UI框架和组件实现说明:

  • 左右滑动实现:ViewPager实现左右页面滑动切换;
  • 下拉上拉刷新:下拉界面,实现天气自动更新;上拉界面,查询显示更多天气相关信息;
  • 天气设置功能:PreferenceActivity+PreferenceFragment,替代单独使用PreferenceActivity,实现天气设置界面;
  • 天气城市查询:输入城市,自动查找匹配的城市项,用于完成指定城市的天气查询;
  • 公共控件封装:自定义实现公共控件CommonUI,用于控件应用内复用;
  • RecyclerView封装:Android推荐控件,优于ListView,统一实现封装不同UI+Data的ItemView;

MVVM框架和组件实现:

框架说明:借助Android架构组件(Android Architecture Components):可实现MVVM应用框架。

  • Lifecycle components: 生命周期管理,该组件是其它组件的基础,可由于跟踪UI的(Activity和Fragment)的生命周期
  • ViewModels: 一种可以被观察的以及可以感知生命周期的数据容器。
  • LiveData :它是UI,例如Activity、Fragment,与数据之间的桥梁;可以在其内部处理数据业务逻辑,例如从网络层或者数据持久层获取数据、更新数据等。
  • Room:一个简单好用的对象映射层;其对SqliteDatabase进行了封装,简化开发者对于数据持久层的开发工作量
  • WorkManager :可以轻松地指定可延迟的异步任务以及它们应该在何时运行,应只用于处理后台任务。
  • Data-binding :使用xml声明格式(而不是编程方式)将布局中的UI组件绑定到应用程序中的数据源。
  • Paging:分页库使您能够更容易地在应用程序的RecyclerView中逐步、优雅地加载数据。--TBD
  • Navigation:导航是应用程序设计的关键部分。通过导航,您可以设计交互,允许用户在应用程序的不同内容区域之间来回移动。--TBD

网络应用框架和组件实现:


测试&调试&更新维护功能实现:

  • 内存泄露:国内可集成LeakCanary,海外使用Firebase的Crash Report(报错上报);
  • 调试框架:Stetho(Facebook开发的工具),android as3.0后直接集成在IDE中了。--TBD
  • 测试框架:Mockito--TBD
  • 自动化测试:android 单元测试用例--TBD
  • 应用热更新框架接入:腾讯tinker--TBD

Android推荐的开发组件工具集(Jetpack):


Android推荐的应用程序的基础架构(Android Architecture Components):

Android 应用程序的基础架构


License

  1. 部分业务机制借鉴网络资源,不能用于商业用途,转载请注明出处,谢谢!
  2. 参考资料:https://github.com/hongyangAndroid/base-diskcache;

weatherapp's People

Contributors

caobaokang419 avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.