繁体   English   中英

检查crosswalk是否通过javacode运行

[英]check if crosswalk is running via javacode

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

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

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

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

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

最好是这样的:

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

防止崩溃。

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

我的用例是,在后台位置事件中,我想发送HTTP请求。 在那里,我需要包括最后使用的crosswalk-app的cookie。 我更改了应用程序,以便它始终将crosswalk 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()等方法中崩溃)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM