请参阅http://forum.xda-developers.com/showthread.php?t=1843837,尤其是 #8 后
引用:
我终于弄清楚了“快速强制关闭”应用程序正在做什么来阻止冻结。它做了一些相当简单的事情:它基本上“隐藏”了 /data/log 文件夹,将它移到一边,并用符号链接替换它。然后这也会导致 Wifi 在重新启动后无法连接(不知道为什么)
mv /data/log /data/log_backup
ln -s /dev/null /data/log
要“禁用”修复程序,它只是做相反的事情。
无论如何,这让我认为该解决方案与该文件夹中发生的事情有关。在强制关闭时,该文件夹中发生的一件事是它接收到 dumpstate 命令的输出:
dumpstate -k -t -n -z -d -o /data/log/dumpstate_app_error
因此,我对“冻结而不是强制关闭对话框”问题的解决方案是将一些文件放在 /data/log 文件夹中,其权限使 dumpstate 无法做到这一点。
我发现这个可以解决问题,但我不知道是否有副作用。
如果您想实现这一点,您可以通过多种方式来实现(例如,甚至通过终端仿真器或一些根文件资源管理器)。我附上了一个可以为你做这件事的可闪光拉链。(见 XDA 链接)
除了一些样板代码之外,重要的一点是(在 zip 中的 updater-script 中):
ui_print("Apply fix...");
delete("/data/log/dumpstate_app_error");
delete("/data/log/dumpstate_app_error.txt.gz");
delete("/data/log/dumpstate_app_error.txt.gz.tmp");
package_extract_file("placeholder", "/data/log/dumpstate_app_error");
package_extract_file("placeholder", "/data/log/dumpstate_app_error.txt.gz");
package_extract_file("placeholder", "/data/log/dumpstate_app_error.txt.gz.tmp");
set_perm(0, 0, 0400, "/data/log/dumpstate_app_error");
set_perm(0, 0, 0400, "/data/log/dumpstate_app_error.txt.gz");
set_perm(0, 0, 0400, "/data/log/dumpstate_app_error.txt.gz.tmp");