Dimole 的废话频道
小米云控开启的RescuePartyPlus自动删除第三方应用数据 今天用哔哩哔哩的时候,软件并没有卡死,但是系统开始弹窗“哔哩哔哩”未响应。这种弹窗很常见,我选择了点“等待”以不关闭应用仅关闭弹窗。但是沟槽的小米从MIUI14开始这个弹窗就会莫名其妙无限弹,此时并没有点“确定”来关闭哔哩哔哩,因为视频还正常播放。 结果过了一会,哔哩哔哩直接自动退出了,重新打开发现登录态没了,缓存的视频也全部没了,一看空间占用也直接没了几个GB。 此时并不知道原因,但是赶紧抓了日志以便查证。在分析日志之前,我甚至还怀疑…
一句话总结:
有弹无响应弹窗马上按关闭应用,不然会有清除应用数据的风险 非专业调查的结果如下(os3,os2 也是差不多的逻辑):
- 应用无响应会被 PackageWatchdog 捕获,并计入 count
- count 会传递到 PackageWatchdogImpl 的 doRescuePartyPlusStepNew 方法,并根据计数来弹出无响应弹窗 / 执行对应等级的清除
对应此人说的第一张图的等级
case 5: removeMessage(4, currentCrashAppName); if (currentCras hAppName.equals(RescuePartyPlusHe lper.getLauncherPackageName(context))) {clearAppCacheAndData(pm, currentCrashAppName); event.setDetails(currentCrashAppName + "RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES;CLEAR_APP_CACHE_AND_DATA;"); } else if (!RescuePartyPlusHelper.checkPackageIsTOPUI(currentCrashAppName)) {Slog.w("RescuePartyPlus", "Clear app cache:" + currentCrashAppName); pm.deleteApplicationCacheFiles(currentCrashAppName, null); event.setDetails(currentCrashAppName + "DELETE_APPLICATION_CACHE_FILES;"); } else {pm.deleteApplicationCacheFiles(currentCrashAppName, null); if (!RescuePartyPlusHelper.resetTheme(currentCrashAppName)) {Slog.e("RescuePartyPlus", "Reset theme failed:" + currentCrashAppName); } else {Slog.e("RescuePartyPlus", "Reset theme success:" + currentCrashAppName); } if (!RescuePartyPlusHelper.resetFont(currentCrashAppName)) {Slog.e("RescuePartyPlus", "Reset fonts failed:" + currentCrashAppName); } else {Slog.e("RescuePartyPlus", "Reset fonts success:" + currentCrashAppName); } event.setDetails(currentCrashAppName + "RESCUE_LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES;RESET_THEME;RESET_FONT;"); RescuePartyPlusHelper.setLastResetConfigStatus(true); RescuePartyPlusHelper.setShowResetConfigUIStatus(false); maybeShowRecoveryTip(context); } sendMessage(currentCrashAppName, 5, event); return false;
Toggle hidden content
计数到第五次开始,会尝试清除应用缓存和数据,可能也解释了此人哔哩哔哩数据被清除的原因
计数到第七次就是强制清除数据了,如果是系统界面,会额外附加重启设备