|
[问题求助]
关于小米手机, 杀渲染进程, 不杀APP进程的问题
[复制链接]
本帖最后由 BIP80784 于 2023-9-7 11:20 编辑
小米系统后台杀进程严重, 频繁出现杀渲染进程, 不杀 APP 进程. 造成应用进入前台, 直接白屏
开启调试模式, 会提示 JS 报错信息: system killed the rendering process to reclaim memory
为了复现这个问题, 我使用雷神模拟器, 开启 root 权限. 安装 APP 自定义 loader, 同步代码后, 使用 adb shell 的 root 权限进行模拟杀死渲染进程. 下面是找到的 app 进程和 渲染进程
如上图所示, 我杀死 APP 启动的 webview 单独进程后, 正式版从后台进入前台就会白屏, 实际报错信息提示: system killed the rendering process to reclaim memory
想解决这个问题, 需要主 APP 进程绑定 webview 进程, 下面是AI的一些方案:
要使 Android 主 APP 进程和 WebView 进程之间建立一种依赖关系,当 WebView 进程被杀死时,主 APP 进程也随之结束,可以采用以下方法:
进程间通信(IPC):
使用 Binder 或 AIDL 实现进程间通信。主进程和 WebView 进程可以互相通知状态。当 WebView 进程被杀死时,它可以通知主进程。
使用 Service:
在 WebView 进程中运行一个绑定服务,并让主 APP 进程绑定到这个服务。当 WebView 进程被杀死时,由于服务断开,onServiceDisconnected() 将在主进程中被调用,此时你可以选择结束主进程。
监听进程死亡:
可以使用 Process.myPid() 获取进程 ID,然后周期性地检查这个进程 ID 是否还活跃。如果 WebView 进程死亡,相应的进程 ID 将不再活跃,此时可以选择结束主进程。
使用广播:
当 WebView 进程结束时,发送一个自定义的广播。主 APP 进程可以注册一个 BroadcastReceiver 来监听这个广播。一旦接收到这个广播,就执行相应的操作,例如结束自己。
自定义 WebView:
通过继承 WebView 并重写其方法,可以捕获 WebView 进程中的异常和错误。这样,当 WebView 进程出现问题时,你可以选择结束主进程。
这些方法都需要一些开发工作,而且具体实施方案可能因应用架构和需求而异。在实际应用中,你需要结合应用的具体情况来选择最合适的方法。
因为不涉及原生开发, 以上我们自己都没法实现, 不知现有 api 接口能否实现类似的功能. @技术支持
|
|