【发布时间】:2014-05-20 16:52:28
【问题描述】:
我在运行 Urban Airship 推送通知的 PhoneGap 应用程序时遇到问题。一切正常,除非使用 Android 的本机任务杀手(关闭应用程序)关闭应用程序。当手机闲置 30 秒到一分钟时,我收到错误消息,“不幸的是,[应用程序] 已停止”。我正在查看 LogCat,发生此错误时出现以下错误:
03-04 10:16:30.420: E/EmbeddedLogger(595): App crashed! Process: com.appname.pacakagename
03-04 10:16:30.420: E/EmbeddedLogger(595): App crashed! Package: com.appname.pacakagename v1 (1.1.2)
03-04 10:16:30.420: E/AndroidRuntime(10257): FATAL EXCEPTION: main
03-04 10:16:30.420: E/AndroidRuntime(10257): java.lang.ExceptionInInitializerError
03-04 10:16:30.420: E/AndroidRuntime(10257): at java.lang.Class.newInstanceImpl(Native Method)
03-04 10:16:30.420: E/AndroidRuntime(10257): at java.lang.Class.newInstance(Class.java:1130)
03-04 10:16:30.420: E/AndroidRuntime(10257): at android.app.ActivityThread.handleCreateService(ActivityThread.java:2909)
03-04 10:16:30.420: E/AndroidRuntime(10257): at android.app.ActivityThread.access$1600(ActivityThread.java:162)
03-04 10:16:30.420: E/AndroidRuntime(10257): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1504)
03-04 10:16:30.420: E/AndroidRuntime(10257): at android.os.Handler.dispatchMessage(Handler.java:99)
03-04 10:16:30.420: E/AndroidRuntime(10257): at android.os.Looper.loop(Looper.java:158)
03-04 10:16:30.420: E/AndroidRuntime(10257): at android.app.ActivityThread.main(ActivityThread.java:5789)
03-04 10:16:30.420: E/AndroidRuntime(10257): at java.lang.reflect.Method.invokeNative(Native Method)
03-04 10:16:30.420: E/AndroidRuntime(10257): at java.lang.reflect.Method.invoke(Method.java:525)
03-04 10:16:30.420: E/AndroidRuntime(10257): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
03-04 10:16:30.420: E/AndroidRuntime(10257): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:843)
03-04 10:16:30.420: E/AndroidRuntime(10257): at dalvik.system.NativeStart.main(Native Method)
03-04 10:16:30.420: E/AndroidRuntime(10257): Caused by: java.lang.NullPointerException
03-04 10:16:30.420: E/AndroidRuntime(10257): at com.urbanairship.Preferences.migratePreferencesFromFileToDb(Preferences.java:173)
03-04 10:16:30.420: E/AndroidRuntime(10257): at com.urbanairship.analytics.AnalyticsPreferences.<init>(AnalyticsPreferences.java:32)
03-04 10:16:30.420: E/AndroidRuntime(10257): at com.urbanairship.analytics.EventService.<clinit>(EventService.java:58)
03-04 10:16:30.420: E/AndroidRuntime(10257): ... 13 more
03-04 10:16:30.430: W/asset(595): Copying FileAsset 0x7860b3b0 (zip:/data/app/com.appname.pacakagename-2.apk:/resources.arsc) to buffer size 200924 to make it aligned.
03-04 10:16:30.430: E/EmbeddedLogger(595): Application Label: appname
所以从这里我可以看到以下几行:
03-04 10:16:30.420: E/AndroidRuntime(10257): Caused by: java.lang.NullPointerException
03-04 10:16:30.420: E/AndroidRuntime(10257): at com.urbanairship.Preferences.migratePreferencesFromFileToDb(Preferences.java:173)
我不确定在哪里调试该错误,我运行了这个:
find ./ -type f -name *Preferences*
但我找不到任何名为 Preferences.java 的文件。
这里指的插件是:
https://github.com/urbanairship/phonegap-ua-push
Android 源代码在这里:
https://github.com/urbanairship/phonegap-ua-push/tree/master/src/android
【问题讨论】:
-
你是在主线程中运行这个吗?
-
拉胡尔,我不确定。我刚刚安装了 PhoneGap 插件,我猜它是作为后台进程运行的推送通知服务。
-
简单的检查方法是......你有没有给出任何 runOnUiThread 类型的方法?如果不是,那么你在主线程上运行,只有在这种情况下你才会得到 FATAL 异常。
-
我已经搜索了 runOnUiThread 并且可以看到这是用于 Cordova 库的,但不是用于 Urban Airship 插件的。
-
哦..然后尝试一件事......无论你在哪里调用 Urban Airship.. 在 uithread 中调用它,然后看看它是否有任何区别..
标签: android cordova urbanairship.com