我正在编写一个企业应用程序,该应用程序需要在用户使用 Intranet 网站时在后台处理一些数据。应用程序的清单正确地声明了 BROWSABLE 意图过滤器,并且浏览器通过 JavaScript 正确地启动它。
通常,应用程序对用户是不可见的,因此应用程序只需将参数从 JavaScript 调用的 URI 传递到后台服务并自行终止。然而,有时,一些后台服务需要用户交互。在这种情况下,主要活动不会终止;相反,它会提示用户提供所需的任何信息/操作,并且仅在满足所有条件时终止。
只要应用程序由于直接用户交互而从浏览器触发(用户单击控件 -> 调用 JavaScript 函数 -> JS 函数请求向应用程序注册的 URI -),上述所有操作都可以完美运行> 显示我的应用程序并等待用户输入)。
但是,如果在网页中没有直接用户交互的情况下调用 JS(例如从 onLoad() 事件处理程序),则应用程序会正确启动,但随后它几乎立即被操作系统终止,不会引发任何错误/异常。我只需调用 onPause(),然后调用 onDestroy(),就是这样。后台服务继续运行,但主要活动消失了,并且没有任何与用户交互的机会。
有谁知道它为什么会表现出这种行为以及我如何抑制或解决它?
更新:如果我android:launchMode="singleInstance"
在清单中设置,则应用程序的行为与预期一致。在我的具体情况下,这解决了问题,但我仍然不了解一般行为。