mAllowStartForeground
是否允许后台启动前台Service
mAllowStartForeground不等于REASON_DENIED,即被允许
mLoggedInfoAllowStartForeground
是否相同的前台Service被允许或者不被允许从后台启动的相关信息已经被记录过。
mInfoAllowStartForeground
存储被拒绝和被允许的相关信息
isFgsBgStart
预留10-49状态码,用于标记允许后台启动前台Service的进程状态。
预留50-99状态码,用于标记允许后台启动前台Service的原因。
isFgsBgStart,顾名思义,即前台Service是否是从后台启动的。如果参数code不等于REASON_PROC_STATE_PERSISTENT、不等于REASON_PROC_STATE_PERSISTENT_UI、不等于REASON_PROC_STATE_TOP、不等于REASON_UID_VISIBLE,就认为是从后台启动的。
前台Service从后台启动的时候,才打印日志信息。
Slog.wtfQuiet
wtfQuiet与wtf的区别有两个地方:
- wtfQuiet是往system日志缓冲区中写,wtf是往main日志缓冲区中写。
- wtfQuiet不会输出wtf的日志,wtf会输出wtf的日志。
mFgsStartAllowedLogSampleRate
前台Service被允许从后台启动这一事件会被写到wtf中,mFgsStartAllowedLogSampleRate管控写入速度。如果值为0.1,就意味着10%会被记录。
默认25%的wtf会被记录。
mFgsStartDeniedLogSampleRate
前台Service不被允许从后台启动这一事件会被写到wtf中,mFgsStartDeniedLogSampleRate管控写入速度。如果值为0.1,就意味着10%会被记录。
默认100%的wtf会被记录。
shouldSamplePackageForAtom
rate如果小于0,则不输出wtf,如果大于等于1,则一定会输出wtf。后续算法有点繁杂,就不在这里分析了。
logFgsBackgroundStart
- 如果前台Service从后台启动的,则将相关信息输出到日志。
- 输出到日志的内容有两类,一类是wtf,一类是普通的日志。
- 不重复记录启动信息。
最后
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。