我的Android应用程序中有一个WebView,我们的服务器会调用很多javascript。我想实现一个系统,其中来自服务器的信号将唤醒/重启应用程序并将其带到前面以提醒用户。我知道这是非常令人讨厌的,但在我看来这是必要的。
似乎实现此目的的唯一方法是让WebView在服务中生效(因为操作系统可以随时杀死活动)。有谁知道这将如何工作?我读过WebViews只能驻留在Activities中。
谢谢!
答案 0 :(得分:4)
WebViews只能驻留在活动中,因为它们是UI组件。解决此问题的最佳方法是将您的javascript正在进行的通信卸载到服务本身。这就是android的工作原理。唯一的其他解决方案是使您的javascript /服务器通信足够容错,以便它可以随时承受失去的连接。关于如何做到这一点的想法,我将研究REST模型。如果您想更好地了解如何在Android上使用REST,我建议使用video from Google IO。直到今天,这是我的最爱之一。
至于从服务器发送信号以启动活动,这在某种程度上是可能的。你需要在设备上听一些东西,很可能是服务。您可以让您的服务进行长时间的轮询,因此只是坐在那里等待回复。当它得到服务器的响应时,它就可以执行
Context.startActivity(intent)
其中intent是指定您要启动的活动的明确意图。也就是说,如果设备上的资源变得稀缺,服务也会被杀死。最重要的是,互联网连接可能随时丢失(这些是移动电话,人们经常把手机放在没有互联网连接的地方)。
最重要的是,这些设备在连接方面的设计并非100%可靠。您最聪明的做法是更改应用程序规范,以便它们更具容错能力。
这可能听起来很生硬,但除了“不要这样做之外,没有什么可以说的了。不要这样做。”更具建设性,我会说,如果你做得对,你应该能够把你的东西推到后台,从不打扰用户。请记住,KISS,这不仅仅是一支带军队的乐队。这是一个美丽的哲学。保持简单愚蠢。你可能想看看这个video,这是我最喜欢的一个,可能有助于让你处于不同的心态。这有用吗?
答案 1 :(得分:1)