当阅读条码时,应用程序偶尔会崩溃
问题描述:
我刚刚开始使用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
问题是我不知道如何解释错误消息或如何调试应用程序。任何关于如何进一步排除错误的指针都会非常感谢。
答
尝试进行手机操作系统的出厂重置。我发现一旦我这样做了,问题就不再发生。
我不知道为什么它不能在手机上工作,但实际上是什么导致了错误。如果我了解问题所在,我会更新此帖子。我几乎可以肯定的唯一的问题是,问题是由我的手机上的操作系统(HTC Desire)的问题引起的。
我应该注意我安装的Android版本是Cyanogen端口,因为由于内存限制,Android 4.2通常不能在HTC Desires上工作。
如上所述,我在运行Android 4.2的HTC One X上没有遇到这些错误。
这是什么运气?我有一个相同的问题。我在Android 4.1.1操作系统上的Android PhoneGap应用程序上使用了相同的BarcodeScanner插件,并且似乎正在向您提供几乎完全相同的错误消息。我刚才连续三次得到了这些错误,之前从未遇到错误 - 而且我没有触及条形码扫描代码 - 既没有调用它的代码,也没有触发它的本地Java源代码,所以我不'不知道发生了什么事。 – 2013-03-19 18:20:31
你说它只会偶尔崩溃,这很奇怪。对于我来说,以前我从未遇到过这个错误,然后今天突然间条形码扫描仪根本无法改变任何东西。我尝试清理我的解决方案,重新启动手机并确保我的手机设置都是平常的东西......但迄今为止我还没有运气。这是一个非常恼人的谜! – 2013-03-19 18:37:14
因此,我只是尝试在HTC One X上运行我的应用程序(在硬件技术规范方面,这是一款性能卓越的手机),并发现它非常完美。是否有可能存在性能问题?也许应用程序在HTC Desire上使用了太多的内存,我一直在收到错误?虽然我不太清楚这可能是怎么回事,因为它昨天为我工作 - 而且我没有给我的应用程序添加任何内容(最近几天我添加了更多的代码,但是我没有做任何事情会给手机的主内存带来额外的压力)。 – 2013-03-19 18:52:44