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

本文讲述了作者开发一个轻量级天气APP的经历,从华为天气APP广告频繁且占用大量存储空间的问题出发,选择和风天气API并实现多区域天气、生活指数等功能,最终成功将应用体积减小到1.54MB,强调了应用的简洁与实用性。
摘要由CSDN通过智能技术生成

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

Screenshot_20240330_074727_com.android.settings.png

选择天气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绘制。

成果展示

Screenshot_20240330_130954_net.dingyong.weather.jpg

Screenshot_20240330_131840_com.android.settings.png

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

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

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

  • 42
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值