【问题标题】:Specific issue with Unfortunately AppName has stopped - NullPointerException不幸的是 AppName 的具体问题已停止 - NullPointerException
【发布时间】: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


【解决方案1】:

通过升级到最新版本的 Urban Airship 插件和我的 PhoneGap 版本解决了这个问题。

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 2013-08-19
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多