自带天气APP太臃肿?手写一个换掉它

天气APP是我们平时比较常用的一个APP,用来关注近期天气情况,给我们的出行安排提供便利。现在的手机一般都是自带有天气APP的,我的Mate20也有华为官方的天气。一开始的时候用着还挺好的,不知从何时起,华为的天气APP在启动的时候会显示广告,虽然看着很烦,但是还勉强能接受。后来,这个天气APP变本加厉,打开后里面到处都是广告,而且越来越臃肿,占用空间达到了211MB,一个天气应用真的需要占用这么大的空间吗,我决定自己动手写一个天气APP试试。我的手机是鸿蒙系统,API版本是6,所以我选择使用DevEco作为开发工具,因为API版本太低了,所以使用js和java作为开发语言,无法使用ets。

选择天气API

天气API有很多,针对不同的业务量有不同的收费方案,之前用的是彩云天气,免费,而且预报也比较准确,后来突然不能用了,去官网看到公告彩云天气不再免费了,所以只能换API。免费API里面做的比较好的是和风天气,和风天气提供的天气信息比较多,调用也简单,还提供了开源的丰富的天气图标供使用,所以选择了和风天气。

和风天气提供的天气信息有:

  • 实时天气
  • 分钟天气预报
  • 逐小时天气预报
  • 每日天气预报
  • 天气预警
  • 生活指数
  • 空气质量
  • 太阳和月亮信息

天气功能需求

  1. 多区域天气。打开APP时默认显示的是当前实时位置的天气预报,可左右滑动切换查看不同的区域天气。

  2. 添加区域天气。通过右上角的搜索按钮打开区域搜索页面,在搜索页面输入地区,点击搜索,显示匹配的区域列表。点击列表项添加到区域天气列表中。可在主页面左右滑动切换。

  3. 删除区域天气。在主页面对应的区域天气预报页,通过右上角的菜单按钮打开菜单,菜单中删除选项,点击删除从区域天气列表中移除当前区域。

  4. 天气内容。天气内容按从上到下分块展示,从上到下依次是:

    1. 实时天气。包括温度,天气,体感温度,湿度,风力。
    2. 降雨/降雪图。展示未来2小时的降雨/降雪量。
    3. 24小时天气。展示未来24小时的天气情况,包括时间,天气,温度,可左右滑动查看。
    4. 7日天气。展示包含今天在内的7天天气情况,包括星期,日间天气,夜间天气,最低温度,最高温度,温度条形图。
    5. 空气质量。包括总的空气质量和分项空气质量,总的天气质量以仪表盘的形式展示,根据空气质量等级以不同颜色区分。分项空气质量包括PM10,PM2.5,二氧化氮,二氧化硫,一氧化碳,臭氧,以分项名称,质量指数,条形图的形式展示。
    6. 太阳和月亮。以图表的形式展示太阳和月亮的轨迹,还有日出,日落,月升,月落的时间。
    7. 生活指数。展示当天的生活指数,如运动,洗车,穿衣等。

开发思路

  1. 申明权限,天气需要用到位置和网络权限,在config.json文件中配置对应的权限
  2. 在需要用到位置信息的地方申请权限
  3. 创建数据库和表,用于保存天气数据,不用频繁的调接口获取天气信息,接口一般都有次数限制。
  4. 创建一个DataAbility用于数据库操作,将天气数据的增删改查逻辑写好。一开始的是没有用DataAbility,使用的时候发现数据有时候对,有时候不对,因为不同的Context会创建不同的数据库,即使数据库名一样。
  5. 创建一个ServiceAbility用于页面数据交互,查询天气的时候优先从数据库中取,如果数据库中不存在,则调接口查询,如果存在,则判断是否超过有效期,如果超过,则重新调接口查询,如果没有超过,则直接使用数据库的数据。
  6. 创建一个Widget用于桌面小部件显示天气信息。
  7. 为了使应用体积尽可能的小,不使用第三方库,网络请求字节用java api写。不适用位图,使用矢量图,或者自己用canvas绘制。

成果展示

大小只有1.54MB,还可以,所以我把自带的华为天气给卸载了,用自己开发的这个轻量,满足需求,没有冗余功能,没有广告的天气APP。

现在越来越多的应用过于臃肿,动不动几百几千兆的大小,大量用户不需要的功能和关联的数据占用用户手机空间,部分应用将功能的使用权交给了用户,但没有将功能的存在交给用户去选择,我觉得还不够好。如果应用开发者不愿意去做,要么忍者,要么就另想他法。

那么,下一个要卸载的应用是谁呢?

相关推荐
熊猫钓鱼>_>2 小时前
【开源鸿蒙跨平台开发先锋训练营】Day 7:开源鸿蒙开发第一阶段复盘与技术深度总结
react native·华为·开源·harmonyos·arkts·openharmony·rnoh
Miguo94well8 小时前
Flutter框架跨平台鸿蒙开发——地理知识速记APP的开发流程
flutter·华为·harmonyos·鸿蒙
讯方洋哥9 小时前
HarmonyOS App开发——鸿蒙音乐播放机应用App开发
华为·harmonyos
小雨青年10 小时前
【鸿蒙原生开发会议随记 Pro】 会议随记 Pro v1.1 发布 详解 HarmonyOS NEXT 原生国际化(i18n)架构与最佳实践
华为·harmonyos
木斯佳11 小时前
HarmonyOS 6实战(源码教学篇)— Speech Kit TextReader:【仿某云音乐接入语音朗读控件】
华为·harmonyos
南村群童欺我老无力.12 小时前
Flutter 框架跨平台鸿蒙开发 - 校园生活一站式:打造智慧校园服务平台
flutter·华为·harmonyos
南村群童欺我老无力.13 小时前
Flutter 框架跨平台鸿蒙开发 - 城市文创打卡:探索城市文化创意之旅
android·flutter·华为·harmonyos
yingdonglan15 小时前
Flutter 框架跨平台鸿蒙开发 ——AnimatedBuilder性能优化详解
flutter·性能优化·harmonyos
菜鸟小芯15 小时前
【开源鸿蒙跨平台开发先锋训练营】DAY8~DAY13 底部选项卡&首页功能实现
flutter·harmonyos
大雷神15 小时前
HarmonyOS智慧农业管理应用开发教程--高高种地-- 第19篇:语音合成 - TTS语音播报
华为·语音识别·harmonyos