当阅读条码时,应用程序偶尔会崩溃

问题描述:

我刚刚开始使用PhoneGap(版本2.5),并且正在开发能够读取QR码(最终NFC标签)的Android应用程序。我正在使用this插件读取QR码。我已经设置了一个简单的测试应用程序,它带有一个启动扫描器的按钮和一个显示QR码内容的p-tag。这是启动扫描仪当阅读条码时,应用程序偶尔会崩溃

scan: function() { 
    try { 
     window.plugins.barcodeScanner.scan(function(args) { 
      console.log("Scanner result: \n" + 
       "text: " + args.text + "\n" + 
       "format: " + args.format + "\n" + 
       "cancelled: " + args.cancelled + "\n"); 
      document.getElementById("info").innerHTML = args.text; 
      console.log(args); 
     }); 
    } catch(ex) { 
     console.log(ex.message); 
    } 
} 

代码工作时代的大部分代码,但偶尔一码已被读取之后就会死机(扫描仪捕获标签和报告,URL /纯文本/不管有被发现,但当它试图返回到我的应用程序时崩溃)。我没有发现崩溃的特定模式,有时可能会扫描相同的代码,有时会崩溃。这是来自LogCat的错误消息。

03-07 13:46:57.478: E/AndroidRuntime(28325): FATAL EXCEPTION: main 
03-07 13:46:57.478: E/AndroidRuntime(28325): java.lang.RuntimeException: Unable to resume activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=195543262, result=-1, data=Intent { act=com.phonegap.plugins.barcodescanner.SCAN flg=0x80000 (has extras) }} to activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.NullPointerException 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2742) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2771) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2235) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.access$700(ActivityThread.java:141) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.os.Handler.dispatchMessage(Handler.java:99) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.os.Looper.loop(Looper.java:137) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at java.lang.reflect.Method.invokeNative(Native Method) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at java.lang.reflect.Method.invoke(Method.java:511) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at dalvik.system.NativeStart.main(Native Method) 
03-07 13:46:57.478: E/AndroidRuntime(28325): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=195543262, result=-1, data=Intent { act=com.phonegap.plugins.barcodescanner.SCAN flg=0x80000 (has extras) }} to activity {com.package.hellophonegap/com.package.hellophonegap.HelloPhonegap}: java.lang.NullPointerException 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.deliverResults(ActivityThread.java:3319) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2729) 
03-07 13:46:57.478: E/AndroidRuntime(28325): ... 13 more 
03-07 13:46:57.478: E/AndroidRuntime(28325): Caused by: java.lang.NullPointerException 
03-07 13:46:57.478: E/AndroidRuntime(28325): at org.apache.cordova.DroidGap.onActivityResult(DroidGap.java:849) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.Activity.dispatchActivityResult(Activity.java:5293) 
03-07 13:46:57.478: E/AndroidRuntime(28325): at android.app.ActivityThread.deliverResults(ActivityThread.java:3315) 
03-07 13:46:57.478: E/AndroidRuntime(28325): ... 14 more 

问题是我不知道如何解释错误消息或如何调试应用程序。任何关于如何进一步排除错误的指针都会非常感谢。

+0

这是什么运气?我有一个相同的问题。我在Android 4.1.1操作系统上的Android PhoneGap应用程序上使用了相同的BarcodeScanner插件,并且似乎正在向您提供几乎完全相同的错误消息。我刚才连续三次得到了这些错误,之前从未遇到错误 - 而且我没有触及条形码扫描代码 - 既没有调用它的代码,也没有触发它的本地Java源代码,所以我不'不知道发生了什么事。 – 2013-03-19 18:20:31

+0

你说它只会偶尔崩溃,这很奇怪。对于我来说,以前我从未遇到过这个错误,然后今天突然间条形码扫描仪根本无法改变任何东西。我尝试清理我的解决方案,重新启动手机并确保我的手机设置都是平常的东西......但迄今为止我还没有运气。这是一个非常恼人的谜! – 2013-03-19 18:37:14

+0

因此,我只是尝试在HTC One X上运行我的应用程序(在硬件技术规范方面,这是一款性能卓越的手机),并发现它非常完美。是否有可能存在性能问题?也许应用程序在HTC Desire上使用了太多的内存,我一直在收到错误?虽然我不太清楚这可能是怎么回事,因为它昨天为我工作 - 而且我没有给我的应用程序添加任何内容(最近几天我添加了更多的代码,但是我没有做任何事情会给手机的主内存带来额外的压力)。 – 2013-03-19 18:52:44

尝试进行手机操作系统的出厂重置。我发现一旦我这样做了,问题就不再发生。

我不知道为什么它不能在手机上工作,但实际上是什么导致了错误。如果我了解问题所在,我会更新此帖子。我几乎可以肯定的唯一的问题是,问题是由我的手机上的操作系统(HTC Desire)的问题引起的。

我应该注意我安装的Android版本是Cyanogen端口,因为由于内存限制,Android 4.2通常不能在HTC Desires上工作。

如上所述,我在运行Android 4.2的HTC One X上没有遇到这些错误。