Android webview里面的服务?

时间:2011-10-25 04:04:09

标签: javascript android service webview

我的Android应用程序中有一个WebView,我们的服务器会调用很多javascript。我想实现一个系统,其中来自服务器的信号将唤醒/重启应用程序并将其带到前面以提醒用户。我知道这是非常令人讨厌的,但在我看来这是必要的。

似乎实现此目的的唯一方法是让WebView在服务中生效(因为操作系统可以随时杀死活动)。有谁知道这将如何工作?我读过WebViews只能驻留在Activities中。

谢谢!

2 个答案:

答案 0 :(得分:4)

WebViews只能驻留在活动中,因为它们是UI组件。解决此问题的最佳方法是将您的javascript正在进行的通信卸载到服务本身。这就是android的工作原理。唯一的其他解决方案是使您的javascript /服务器通信足够容错,以便它可以随时承受失去的连接。关于如何做到这一点的想法,我将研究REST模型。如果您想更好地了解如何在Android上使用REST,我建议使用video from Google IO。直到今天,这是我的最爱之一。

至于从服务器发送信号以启动活动,这在某种程度上是可能的。你需要在设备上听一些东西,很可能是服务。您可以让您的服务进行长时间的轮询,因此只是坐在那里等待回复。当它得到服务器的响应时,它就可以执行

Context.startActivity(intent)

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

最重要的是,这些设备在连接方面的设计并非100%可靠。您最聪明的做法是更改应用程序规范,以便它们更具容错能力。

这可能听起来很生硬,但除了“不要这样做之外,没有什么可以说的了。不要这样做。”更具建设性,我会说,如果你做得对,你应该能够把你的东西推到后台,从不打扰用户。请记住,KISS,这不仅仅是一支带军队的乐队。这是一个美丽的哲学。保持简单愚蠢。你可能想看看这个video,这是我最喜欢的一个,可能有助于让你处于不同的心态。这有用吗?

答案 1 :(得分:1)

TomBomb,感谢您接受我之前的回答,但我想我可能还有其他一些用途。为什么不使用Status Bar Notification让用户知道服务器中有新的内容,而不是强迫Activity进入前台?