Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务内部的Android webview?_Javascript_Android_Service_Webview - Fatal编程技术网

Javascript 服务内部的Android webview?

Javascript 服务内部的Android webview?,javascript,android,service,webview,Javascript,Android,Service,Webview,我的android应用程序中有一个WebView,我们的服务器从中调用了很多javascript。我想实现一个系统,在这个系统中,来自服务器的信号将唤醒/重新启动应用程序,并将其带到前端以提醒用户。我知道这很令人讨厌,但对我来说这是必要的 似乎实现这一点的唯一方法是让WebView在服务中活动(因为操作系统可以随时终止活动)。有人知道这是怎么回事吗?我读到WebView只能驻留在活动中 谢谢 Web视图只能驻留在活动中,因为它们是UI组件。解决此问题的最佳方法是将javascript正在进行的通

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

似乎实现这一点的唯一方法是让WebView在服务中活动(因为操作系统可以随时终止活动)。有人知道这是怎么回事吗?我读到WebView只能驻留在活动中


谢谢

Web视图只能驻留在活动中,因为它们是UI组件。解决此问题的最佳方法是将javascript正在进行的通信卸载到服务本身中。这就是安卓的工作原理。唯一的另一个解决方案是使javascript/服务器通信具有足够的容错性,使其能够承受任何时候的连接中断。关于如何做到这一点,我将研究REST模型。如果您想更好地使用REST和android,我建议您这样做。直到今天,它还是我的最爱之一

就从服务器发送启动活动的信号而言,在某种程度上这是一种可能性。您需要在设备上安装监听设备,很可能是一项服务。你可以让你的服务人员做一个长时间的民意调查,然后坐在那里等待回应。当它收到来自服务器的响应时,它可以执行

Context.startActivity(intent)
其中,intent是指定要启动的活动的显式intent。也就是说,如果设备上的资源越来越少,服务也可能被终止。除此之外,互联网连接随时可能丢失(这些是手机,人们经常在没有互联网连接的地方使用手机)

归根结底,这些设备在连接方面并非100%可靠。对你来说,最明智的做法是更改你的应用程序规格,使它们更具容错性


这听起来可能有些生硬,但除了“不要这样做,永远不要这样做”之外,我能说的就不多了。更具建设性的是,我会说,如果你做得对,你应该能够将你的东西推到后台,而不必为它而困扰用户。记住,基斯,这不仅仅是一支有军队的乐队。这是一种美丽的哲学。保持简单和直接。你可能想看看这个,这是我最喜欢的,可能会帮助你进入一个不同的心态。这有帮助吗?

TomBomb,谢谢你接受我之前的回答,但我想我可能对你有其他用处。与其强制某个活动进入前台,为什么不使用一个按钮让您的用户知道来自服务器的新信息?

好的,这很有意义。你能解释一下把我的应用程序放回前台的问题吗?编辑了我的回答以进一步回答你的问题。谢谢Kurtis,这是一个很大的帮助。我正在寻找一种方法,不完全依赖活动/服务始终处于活动状态。我正在开始上述活动,但我的问题是,一旦启动意图,我需要我的应用程序再次聚焦。如果在调用startActivity()时用户在另一个应用程序中,则我的应用程序仍在后台。有什么想法吗?是的,我理解你的哲学。我问这个问题的原因是我正在开发一个非常具体的应用程序,其中“用户”是一名员工,他们使用电话接收和执行工作。这永远不会适用于普通的消费者应用程序,但这就是安卓的魅力所在,对吗?你可以让手机(几乎)做你想做的任何事情。我现在明白了。这更有道理。因此,也许你是证明这一规则的例外。我想在这种情况下我帮不了什么忙。当另一个活动正在运行时,我不知道如何强制一个活动进入前台。