一个服务中的Android webview

Android webview inside a service?

本文关键字:Android webview 服务 一个      更新时间:2023-09-26

我有一个WebView在我的android应用程序从很多javascript被我们的服务器调用。我想实现一个系统,从服务器的信号将唤醒/重新启动应用程序,并把它带到前面提醒用户。我知道这非常令人讨厌,但对我来说这是必要的。

似乎唯一的方法来实现这一点是有WebView活在一个服务(因为活动可以在任何时候被操作系统杀死)。有人知道这是怎么回事吗?我读到webview只能驻留在activity中。

谢谢! !

webview只能驻留在activity中,因为它们是一个UI组件。解决此问题的最佳方法是将javascript正在进行的通信卸载到服务本身。这就是android的工作原理。唯一的另一个解决方案是使您的javascript/服务器通信具有足够的容错性,以便它可以承受任何时候失去连接。关于如何做到这一点的想法,我将研究REST模型。如果你想更好地了解如何在android上使用REST,我建议你看这个来自Google IO的视频。直到今天,它仍然是我的最爱之一。

就从服务器发送信号来启动活动而言,这在某种程度上是可能的。你需要在设备上监听一些东西,很可能是一个服务。您可以让服务执行长时间的轮询,然后坐在那里等待响应。当它从服务器得到响应时,它可以执行

Context.startActivity(intent)

其中intent是一个明确的意图,指定你想要启动的活动。也就是说,如果设备上的资源变得稀缺,服务也可能被终止。最重要的是,互联网连接可能随时丢失(这些是移动电话,人们经常把手机带到没有互联网连接的地方)。

最重要的是,这些设备在连接方面并不是100%可靠的。对你来说,最明智的做法是改变你的应用程序规格,使其更具容错性。

这可能听起来很生硬,但除了"不要这样做"之外,我也没什么可说的了。永远不要这样做。"更有建设性的是,我想说,如果你做得对,你应该能够把你的东西推到后台,而不会打扰用户。记住,KISS乐队不仅仅是一支拥有军队的乐队。这是一种美丽的哲学。保持简单,傻瓜。你可能想看看这个视频,这是我最喜欢的视频之一,它可能会帮助你进入一种不同的心态。这有帮助吗?

TomBomb,谢谢你接受我之前的回答,但我想我可能有别的东西对你有用。与其强迫一个Activity进入前台,为什么不使用状态栏通知让你的用户知道一些来自服务器的新消息已经进入呢?