检查crosswalk是否通过javacode运行

时间:2016-01-13 09:54:32

标签: java cordova crosswalk

我添加了一些还包含IntentService的cordova插件代码。

即使应用未运行,也会定期调用此服务。

但是像“新XWalkCookieManager()。getCookie(url)”这样的crosswalk方法会崩溃(“这个应用程序已关闭”+ logcat崩溃)。实例new XWalkCookieManager()确实运行良好,但getCookie崩溃。

我已经尝试调试它但没有成功,因为您无法将调试器附加到已关闭的应用程序。

在其中一个XWalks类/方法中是否有一个属性或方法来检查当前正在运行的人行横道?

最好会是这样的:

if(new XWalkCookieManager().isAvailable()) {
    //do stuff like getCookie
}

以防止崩溃。

1 个答案:

答案 0 :(得分:0)

与此同时,我找到了一种解决方法,以确保只有在应用程序未被杀死时才执行crosswalk方法。它与我的用例高度相关,因此需要在另一段代码中满足要求。

我的用例是,在后台位置事件中,我想发送HTTP请求。在那里,我需要包括最后使用的crosswalk-app的cookie。我更改了应用程序,以便始终将人行横道cookie保存在SharedPreferences对象中(它调用我的cordovaplugin并告诉它saveCookie(),然后插件从人行横道获取它。)

为了阅读cookie,这已经足够了,因为我现在可以随时从SharedPreferences读取cookie。

现在问题是:当我在回复中收到新的cookie时,我可以把它们写回人行道吗?如果应用正在运行,我必须执行new XWalkCookieManager().setCookies()。在kill应用程序中执行时会崩溃,因为当locationupdate发生时,crosswalk没有运行。

所以我的解决方法是:我会先将cookie保存回SharedPreferences。然后我将Broadcast发送到包含Cookie的MainActivity。我还扩展了MainActivity(使用cordova钩子脚本)来包含BroadcastReciever,然后将cookie保存到人行横道。 MainActivity仅在应用运行时运行。当应用程序被杀死且因此MainActivity未运行时,没有人会收到此Broadcast并且没有代码可以崩溃。

对于一个应该可以更容易解决的问题,这是一个巨大的解决方法。但似乎没有其他方法没有人行横道可以判断它是否正在运行(或者只是没有在那些getCookies()等方法中崩溃)。