电量与网络优化

电量优化

减少操作:您的应用是否存在可删减的多余操作?例如,是否可以缓存已下载的数据,而不是每次重新下载数据?
推迟操作:应用是否需要立即执行某项操作?例如,是否可以等到设备充电后或者Wifi连接时(通常情况下使用移动网络要比WIFI更耗电 )再将数据备份到云端?
合并操作:工作是否可以批处理,而不是多次将设备置于活动状态?比如和服务器请求不同的接口获取数据,部分接口是否可以合并为一个?

Doze测试(打盹儿)

暂停访问网络。
系统忽略PowerManager.WakeLock唤醒锁定。
标准 AlarmManager 闹钟(包括 setExact() 和 setWindow() )推迟到下一个维护期。
如果需要设置在设备处于低电耗模式时触发的闹钟,请使用API 23(6.0)提供的setAndAllowWhileIdle() (一次性闹钟,同set方法)或 setExactAndAllowWhileIdle() (比set方法设置的精度更高,同setExact)。
使用 setAlarmClock() 设置的闹钟将继续正常触发,系统会在这些闹钟触发之前不久退出低电耗模式。
系统不执行 WLAN 扫描。
系统不允许运行同步适配器AbstractThreadedSyncAdapter (账号同步拉活)。
系统不允许运行 JobScheduler 。

#启用Doze
adb shell dumpsys deviceidle enable
#强制进入doze模式 (同时还需要关闭屏幕)
adb shell dumpsys deviceidle force-idle
#退出doze模式
adb shell dumpsys deviceidle unforce
#关闭doze
adb shell dumpsys deviceidle disable
#重置设备
adb shell dumpsys battery reset
#查看doze白名单
adb shell dumpsys deviceidle whitelist

Standby待机模式

应用待机模式会延迟用户近期未与之交互的应用的后台网络活动。
当用户有一段时间未触摸应用并且应用没有以下表现, 则Android系统就会使应用进入空闲状态
l 用户明确启动应用
l 应用当前有一个进程在前台运行( 作为活动或前台服务, 或者正在由其他活动或前台服务使用) 。
l 应用生成用户可在锁定屏幕或通知栏中看到的通知。
当用户将设备插入电源时, 系统会从待机状态释放应用, 允许它们自由访问网络并执行任何待处理的作
业和同步。 如果设备长时间处于闲置状态, 系统将允许闲置应用访问网络, 频率大约每天一次。

日志采集腾讯xlog和美团logan

https://tech.meituan.com/2018/10/11/logan-open-source.html
https://tech.meituan.com/2018/02/11/logan.html

WorkManager(厂商的修改,有些不管用)

WorkManager API 是一个针对原有的 Android 后台调度 API 整合的建议替换组件

观察电量耗电情况用Battery Historian或者Energy Profiler(8.0以上看location、wake locks、alarms & Jobs。中文-唤醒锁定、闹钟、作业和位置信息请求)

网络优化

网络请求步骤
dns->解析出ip->socket(Tcp/ip)3次握手建立连接封装报文格式-》发送数据给服务器

1、dns解析优化

DNS 完整的解析流程很长,会先从本地系统缓存取,若没有就到最近的 DNS 服务器取,若没有再到主域名服务器取,每一层都有缓存,但为了域名解析的实时性,每一层缓存都有过期时间。
传统的DNS解析机制有几个缺点:
缓存时间设置得长,域名更新不及时,设置得短,大量 DNS 解析请求影响请求速度;
域名劫持,容易被中间人攻击,或被运营商劫持,把域名解析到第三方 IP 地址,据统计劫持率会达到7%;
DNS 解析过程不受控制,无法保证解析到最快的IP;
一次请求只能解析一个域名

 

用阿里的HTTPDNS优化

HTTPDNS的好处总结就是:
Local DNS 劫持:由于 HttpDns 是通过 IP 直接请求 HTTP 获取服务器 A 记录地址,不存在向本地运营商询问
domain 解析过程,所以从根本避免了劫持问题。
DNS 解析由自己控制,可以确保根据用户所在地返回就近的 IP 地址,或根据客户端测速结果使用速度最快的IP;
一次请求可以解析多个域名。 

2、连接优化(keep-alive)减少tcp、ssl握手

http1.1 以下
不支持 
http1.1 
串行复用请求,需要等待上个请求结束
http2.0
支持多路复用把在连接里传输的数据都封装成一个个stream,每个stream都有标识

3、数据压缩

两种数据格式是 json 和 protobuf 是二进制,比json数据更小
https://github.com/protocolbuffers/protobuf/blob/master/java/lite.md
gzip压缩
其他
1、使用webp代替png/jpg
2、不同网络的不同图片下发,如(对于原图是300x300的图片):
2/3G使用低清晰度图片:使用100X100的图片;
4G再判断信号强度为强则使用使用300X300的图片,为中等则使用200x200,信号弱则使用100x100图片;
WiFi网络:直接下发300X300的图片
3、http开启缓存 / 首页数据加入缓存

模拟网络
超时模拟 直接睡眠
弱网模拟 设置读写字节为1kb或者设置读的是sleep
断网模拟 在okhttp设置response为400
参考didi 哆啦A梦

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch是一种基于Python的深度学习框架,可以帮助我们构建和训练神经网络模型。使用PyTorch进行电量预测可以通过以下步骤进行: 1. 数据准备:收集和整理关于电量使用的历史数据,包括电量的测量值以及可能影响电量的各种因素如天气、季节等。将数据进行预处理,如数据清洗、缺失值处理和特征工程等。 2. 构建神经网络模型:使用PyTorch构建一个适合电量预测的神经网络模型。可以选择不同的网络架构,如MLP、RNN、CNN或Transformer等,以及相应的激活函数、损失函数和优化器。 3. 数据划分和批处理:将数据集分为训练集、验证集和测试集,通常采用70%的数据用于训练、15%的数据用于验证和15%的数据用于测试。同时,将数据进行批处理,即将数据分成小的批次进行模型训练,以加快训练速度并提高泛化性能。 4. 模型训练:使用训练集对神经网络模型进行训练,通过反向传播算法更新模型的权重和偏差。可以设置训练的迭代次数、学习率和批次大小等参数,并监控模型在验证集上的表现,以避免过拟合或欠拟合。 5. 模型评估和调优:使用测试集对训练好的模型进行评估,计算预测结果与真实值之间的误差指标,如均方根误差(RMSE)、平均绝对百分比误差(MAPE)等。根据评估结果,可以调整模型的超参数或网络结构,继续进行模型的优化。 6. 预测和应用:使用训练好的模型对未来的电量数据进行预测。可以根据实际需求设置预测的时间间隔,如小时、天或月。将模型应用于实际场景中,可以根据预测结果进行电力调度、能源规划和电费优化等。 总之,使用PyTorch进行电量预测可以通过数据准备、模型构建、训练和评估等步骤来实现。PyTorch提供了强大的深度学习功能和易于使用的API,可以帮助开发者快速构建和训练高效准确的电量预测模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值