通过java代码检查人行横道是否为运行
check if crosswalk is running via javacode
我添加了一些还包含 IntentService 的 cordova 插件代码。
将定期调用此服务,即使该应用不是 运行。
但是像 "new XWalkCookieManager().getCookie(url)" 这样的人行横道方法会崩溃("this app has been closed" + 在 logcat 中崩溃)。实例 new XWalkCookieManager()
运行良好,但 getCookie
崩溃。
我已经尝试调试它但没有成功,因为您无法将调试器附加到已关闭的应用程序。
其中一个 XWalks classes/methods 中是否有属性或方法来检查人行横道当前是否 运行?
最好是这样的:
if(new XWalkCookieManager().isAvailable()) {
//do stuff like getCookie
}
防止崩溃。
与此同时,我找到了一种解决方法,以确保仅在应用程序未被终止时才执行人行横道方法。它与我的用例高度相关,因此需要在另一段代码中满足要求。
我的用例是,在后台位置事件中,我想发送 HTTP 请求。我需要包括人行横道应用程序最后使用的 cookie。我更改了应用程序,以便它始终将人行横道 cookie 保存在 SharedPreferences
对象中(它调用我的 cordovaplugin 并告诉它 saveCookie()
,然后插件从人行横道获取它)。
对于读取 cookie,这就足够了,因为我现在可以随时从 SharedPreferences
读取 cookie。
现在的问题是:当我在响应中收到新的 cookie 时,我可以将它们写回人行横道吗?如果应用程序是 运行,我将不得不执行 new XWalkCookieManager().setCookies()
。这会在已终止的应用程序中执行时崩溃,因为在发生位置更新时人行横道不是 运行。
所以我的解决方法是:我会先将 cookie 保存回 SharedPreferences
。然后我将 Broadcast
发送到包含 cookie 的 MainActivity
。我还扩展了 MainActivity
(使用 cordova 挂钩脚本)以包含一个 BroadcastReciever
,然后将 cookie 保存到人行横道。当应用程序为 运行 时,MainActivity
仅为 运行。当应用程序被终止并且因此 MainActivity
不是 运行 时,没有人会收到这个 Broadcast
并且没有代码崩溃。
对于一个应该更容易解决的问题,这是一个巨大的解决方法。但似乎没有其他方法可以判断它是否是 运行(或者只是在那些 getCookies()
等方法中不崩溃)。
我添加了一些还包含 IntentService 的 cordova 插件代码。
将定期调用此服务,即使该应用不是 运行。
但是像 "new XWalkCookieManager().getCookie(url)" 这样的人行横道方法会崩溃("this app has been closed" + 在 logcat 中崩溃)。实例 new XWalkCookieManager()
运行良好,但 getCookie
崩溃。
我已经尝试调试它但没有成功,因为您无法将调试器附加到已关闭的应用程序。
其中一个 XWalks classes/methods 中是否有属性或方法来检查人行横道当前是否 运行?
最好是这样的:
if(new XWalkCookieManager().isAvailable()) {
//do stuff like getCookie
}
防止崩溃。
与此同时,我找到了一种解决方法,以确保仅在应用程序未被终止时才执行人行横道方法。它与我的用例高度相关,因此需要在另一段代码中满足要求。
我的用例是,在后台位置事件中,我想发送 HTTP 请求。我需要包括人行横道应用程序最后使用的 cookie。我更改了应用程序,以便它始终将人行横道 cookie 保存在 SharedPreferences
对象中(它调用我的 cordovaplugin 并告诉它 saveCookie()
,然后插件从人行横道获取它)。
对于读取 cookie,这就足够了,因为我现在可以随时从 SharedPreferences
读取 cookie。
现在的问题是:当我在响应中收到新的 cookie 时,我可以将它们写回人行横道吗?如果应用程序是 运行,我将不得不执行 new XWalkCookieManager().setCookies()
。这会在已终止的应用程序中执行时崩溃,因为在发生位置更新时人行横道不是 运行。
所以我的解决方法是:我会先将 cookie 保存回 SharedPreferences
。然后我将 Broadcast
发送到包含 cookie 的 MainActivity
。我还扩展了 MainActivity
(使用 cordova 挂钩脚本)以包含一个 BroadcastReciever
,然后将 cookie 保存到人行横道。当应用程序为 运行 时,MainActivity
仅为 运行。当应用程序被终止并且因此 MainActivity
不是 运行 时,没有人会收到这个 Broadcast
并且没有代码崩溃。
对于一个应该更容易解决的问题,这是一个巨大的解决方法。但似乎没有其他方法可以判断它是否是 运行(或者只是在那些 getCookies()
等方法中不崩溃)。