Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

android13长时间使用之后, 出现无法写入日志的情况 #486

Open
dengzhiguiios opened this issue Jul 11, 2023 · 6 comments
Open

Comments

@dengzhiguiios
Copy link

android13长时间使用之后, 出现无法写入日志的情况
检查设备剩余空间---剩余几十G, 正常
重启app---一样无法写入日志和上传日志
写入储存权限关闭再打开---日志可以重新写入和上传日志
在小于android13设备使用---正常
在android13设备短期使用---正常
在android13设备长期使用---无法写入日志

测试设备---三星android13平板
日志文件存储位置---context.fileDir, 这是应用内部存储目录, 按道理不需要写入存储权限

猜测和android13的媒体权限改动有关, 在android13申请WRITE_EXTERNAL_STORAGE会得到永久拒绝的回调, 还有应用长时间不使用会自动回收权限

@Richard-Cao
Copy link
Member

测试下换个目录呢?比如用cacheDir

@dengzhiguiios
Copy link
Author

日志使用时间不定, 不知道要用多久会无法写入, 比较难重现, 但是在android13上使用问题是有的, 出现了好多次

@Richard-Cao
Copy link
Member

日志使用时间不定, 不知道要用多久会无法写入, 比较难重现, 但是在android13上使用问题是有的, 出现了好多次

换个目录试试呢,换个不需要WRITE_EXTERNAL_STORAGE权限的

@dengzhiguiios
Copy link
Author

找到问题所在了, 版本是1.2.4, 没找到更新的版本使用
LoganThread里面的private boolean mIsWorking;是非原子性的
在上传日志的时候, 把Logan日志的保存目录下文件全部删除掉, 本来是为了2分钟左右上传一次日志(浏览器加载太多日志会奔溃)
删除日志文件的过程中, mIsWorking的值一直为true, 导致写入日志失败

解决方案:
创建一个volatile关键词修饰的变量, 保存删除日志文件中的状态, 在删除中就禁止写入日志, 这样避免mIsWorking的值被修改

@Richard-Cao
Copy link
Member

你是删除的了当天的日志?

@dengzhiguiios
Copy link
Author

是全部日志删除, 因为产生比较多网络请求日志, 不能太长时间再上传, 一个文件太多日志在浏览器会内存不足网页奔溃.
看官方的删除日志是删除.copy文件, 删除这个在下次上传的时候会叠加以前的日志, 达不到预期效果, 所以直接整个日志目录里面全部日志文件都删除了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants