SweetSalts

Results 3 issues of SweetSalts

限速失败问题 背景 下载时发现调用限速接口时,限速不准确,接口无法调用。 在设置限速之后还会出现下载速度总是处于100Kb以下的情况。 https://github.com/AriaLyy/Aria/issues/884 问题复现 通过打log定位问题,最终发现是线程睡眠时间不准确导致的。 指定的睡眠时间是0.973489ms,但是实际上睡了41.95401ms。 限速就是通过控制线程睡眠时间来达到控制接收传输字节流速度的,如果sleep睡眠时间与指定的不一致就会出现限速不准确,会有10~40ms的差异。 同时,一旦进行了限速就会一直触发这个问题,所以才会有背景中提到的,一旦设置限速之后网速一直小于100Kb/s。 问题分析 Android系统中,后台线程调用sleep之后由于优先级较低,不能及时抢占cpu资源,所以会导致睡眠时间与指定的时间不符。 进一步验证: 编写demo验证 当应用处于前台时:睡眠时间基本准确。 当应用退到后台,也会出现睡眠时间不准确的现象。 问题解决 线程的优先级受到应用生命周期的影响,当应用退到后台对应的线程游戏级会降低。 同时,还可以显式设置线程的优先级来保证功能的正常。 下载的优先级从后台调整为默认之后,限速功能正常。

wontfix

## 版本 * 框架版本 3.8.16 * 系统版本 all ## 错误的url all ## 错误日志 无 ## 重现步骤 1.打开官方demo应用 2.打开HTTP下载 3.打开单任务下载 4.右上角选择限速 选择限速不生效

wontfix

## Issue/提问须知 **在提交issue之前,我们应该先查询是否已经有相关的issue以及[常见问题](https://github.com/Tencent/tinker/wiki/Tinker-%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98)。提交issue时,我们需要写明issue的原因,以及编译或运行过程的日志(加载进程以及Patch进程)。issue需要以下面的格式:** ``` 异常类型:app运行时异常 手机型号:Android 10 所有型号 手机系统版本:Android 10 tinker版本:v1.9.14.24 gradle版本:4.1.3 是否使用热更新SDK: 无 系统:Mac 堆栈/日志: 08-31 17:03:15.778 5418 5418 W Tinker.Instrumentation: oldComponent was null, start ComponentInfo{com.DefaultCompany.Unity2018Empty/com.DefaultCompany.Unity2018Empty.UnityPlayerActivity} next. 08-31 17:03:15.778...