如何停止Chrome后台更新影响我的应用程序?

14

更新的帖子

问题

我们有各种日志表明,Chrome 的后台更新正在杀死我们使用 Webview 的应用程序。这些日志都遵循类似的模式;

3034  3049 I ActivityManager: Force stopping com.android.chrome appid=10115 user=-1: installPackageLI
3034  3049 I ActivityManager: Killing 963:com.google.android.googlequicksearchbox:search/u0a80 (adj 500): stop com.android.chrome,installPackageLI
3034  3049 W ActivityManager: Scheduling restart of crashed service com.google.android.googlequicksearchbox/com.google.android.apps.gsa.shared.util.keepalive.StandaloneKeepAlive$KeepAliveService in 1000ms
3034  3049 W ActivityManager: Scheduling restart of crashed service com.google.android.googlequicksearchbox/com.google.android.apps.gsa.nowoverlayservice.DrawerOverlayService in 10999ms
3034  3049 I ActivityManager: Killing 1709:com.my.app/u0a292 (adj 0): stop com.android.chrome,installPackageLI

我在这里找到了另一个开发者提出的类似问题:https://seap.samsung.com/forum-topic/activitymanager-kills-our-pro-kiosk-mode-app-chrome-update,其中谈到了Knox提供的API,但我一直无法找到更多信息。理想情况下,我希望有一个本地解决方案,或者可能是某种AndroidManifest条目来缓解这个问题。

我知道当一个应用程序依赖于另一个应用程序时,可能需要关闭并重新启动以保持一致性。然而,我们的应用程序是一个全屏幕活动应用程序,在这种情况下只是被强制退出,似乎奇怪的是没有办法解决这个问题。

问题

如何等待我们的应用程序完成(或失去焦点)才能进行更新?我的应用设置中是否存在可以避免此类问题的内容?也许使用webview是问题所在?

应用程序信息

我们对webview的依赖很可能是第三方广告提供商的问题。该应用程序是使用Unity制作的。我可以更改AndroidManifest本身或更新我们本地版本的Player和主Activity。如果需要,我也可以编写本地代码。我怀疑这对本地应用程序也是一个问题。


原始帖子 - 标题:识别对Chrome的依赖关系(Chrome更新时应用程序被杀死)。

我注意到每次Chrome应用程序更新时,我的应用程序都会被杀死。

Force stopping com.android.chrome appid=10145 user=-1: installPackageLI
Killing 14427:my.application.com/u0a263 (adj 200): stop com.android.chrome,installPackageLI

顺便一提:我的应用程序中根本没有使用Chrome Web View(或者一般的Web View)。

是否有可能是我的应用程序中的某些依赖项使用了Web View,这就是为什么我的应用程序被杀死的原因?如果是,请问如何检测哪一个依赖项使用了Web View?如果不是,有什么方法可以防止这种情况发生吗?


这绝对是一件事情;https://seap.samsung.com/forum-topic/activitymanager-kills-our-pro-kiosk-mode-app-chrome-update。我会感激任何关于此事的详细信息。 - JimmyDeemo
1
非常抱歉对原帖发布者,但我确信之前已经问过这个问题,因此编辑了更多信息并提供了赏金。我保留了原始问题,并认为它们有相同的解决方案。 - JimmyDeemo
您可以强制停止应用程序或对Android设备进行root操作。 - Amirhf
我不确定你是否理解了问题@Amirhf。这是在我的应用程序在前台执行时发生的运行时错误。Chrome更新会毫无警告地终止应用程序。 - JimmyDeemo
在我的情况下,我创建了一个粘性前台服务,即使Chrome更新我的手机并崩溃,我的应用程序也会重新启动。 - IgorGanapolsky
1个回答

2
如何在更新进行之前等待我们的应用程序完成(或失去焦点)?
请敲起鼓来……您不能。这是任何使用WebView的应用程序(或使用某些框架或库使用WebView的应用程序)长期存在的问题。参见this bug。您的应用程序无法阻止Chrome/WebView更新;这将是一个安全问题。更新由Play商店安排,它不知道哪些应用程序依赖于WebView。
我的应用程序中是否有一些依赖项使用了WebView,这就是为什么我的应用程序被杀死的原因?如果是,如何检测出来?
尝试使用adb logcat | grep WebViewFactory;每当应用程序开始使用WebView时,该字符串将被记录。
您还可以按照这些说明使用Chrome的开发工具来检查WebView。(如果您使用的是Android的userdebug版本,则可以跳过setWebContentsDebuggingEnabled(true)。)这将显示您应用程序中的所有WebViews以及每个WebView的内容。
此外,如果您麻烦构建userdebug Android,您可以在WebView构造函数中添加堆栈跟踪。

看起来没有办法绕过这个问题。

这不是一个很好的选择,但您可以尝试向应用程序添加另一个进程,并仅从该进程中使用WebView,并处理崩溃而不杀死主进程。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接