来自 Adob​​e AIR 应用程序的 java.lang.RuntimeException

Posted

技术标签:

【中文标题】来自 Adob​​e AIR 应用程序的 java.lang.RuntimeException【英文标题】:java.lang.RuntimeException from Adobe AIR app 【发布时间】:2013-06-07 15:37:49 【问题描述】:

我在亚马逊上有一个应用程序有时(不到 1% 的安装)崩溃,这反映在崩溃报告中。显然,我无法访问应用程序崩溃的实际设备。以下是其中一份崩溃报告。是否可以采取任何措施来确定崩溃的原因?

java.lang.RuntimeException 在 android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2672) 在 android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:2690) 在 android.app.ActivityThread.access$2100(ActivityThread.java:117) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:964) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:130) 在 android.app.ActivityThread.main(ActivityThread.java:3683) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:507) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:850) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.IllegalArgumentException 在 android.app.Activity.missingDialog(Activity.java:2636) 在 android.app.Activity.dismissDialog(Activity.java:2621) 在 com.amazon.android.framework.prompt.Prompt.dismissDialog(未知来源) 在 com.amazon.android.framework.prompt.Prompt.dismiss(未知来源) 在 com.amazon.android.framework.prompt.PromptManagerImpl.finish(未知来源) 在 com.amazon.android.framework.prompt.PromptManagerImpl.a(未知来源) 在 com.amazon.android.framework.prompt.i.a(未知来源) 在 com.amazon.android.n.e.a(未知来源) 在 com.amazon.android.n.b.a(未知来源) 在 com.amazon.android.framework.context.d.a(未知来源) 在 com.amazon.android.framework.context.d.onDestroy(未知来源) 在 com.amazon.android.Kiwi.onDestroy(未知来源) 在 air.com.sierravistasoftware.SightWordsSB1.AppEntry.onDestroy(AppEntry.java) 在 android.app.ActivityThread.performDestroyActivity(ActivityThread.java:2659) ... 11 更多

【问题讨论】:

您知道它在哪些 Kindle 设备上运行(Gingerbread 或 ICS)以及 AIR 运行时的哪个版本(您是使用平台自己的版本,还是将其捆绑为强制运行时)? 姜饼(2.3.4 版)。 AIR 3.5 作为强制运行时。 【参考方案1】:

您在关闭对话框时遇到问题。问题可能出现在对话框启动、设备方向更改并且在没有对话框的情况下重新创建活动时。在这种情况下,如果您尝试关闭对话框,应用程序将会崩溃。

尝试复制它,看看是否是问题所在。

您可能更喜欢使用 DialogFragment 来避免此问题,或者只是捕获异常并继续前进,因为您得到了您正在寻找的内容(您的对话框已关闭)。

更新:

您的错误日志指出,当 Activity 被销毁时,它试图关闭丢失的对话框。这可能是com.amazon.android.framework 源代码中的一个问题,并且可能会在崩溃前提示用户输入某些内容。

您可以尝试复制 Activity 被销毁时的情况。

在我们通过 cmets 聊天之后,如果没有看到代码,我就无法思考其他任何事情,因此我鼓励您使用错误跟踪系统来帮助您找出您的应用在什么情况下会崩溃。

试试ACRA:

ACRA 是一个库,使 Android 应用程序能够自动发布他们的 崩溃报告到 GoogleDoc 表单。它是针对安卓的 应用程序开发人员帮助他们从应用程序中获取数据 当它们崩溃或行为错误时。

【讨论】:

我使用 Adob​​e AIR 3.5 作为强制运行时。你的答案仍然适用吗? 这只是一种考虑的可能性,因为似乎应用程序崩溃试图关闭丢失的对话框。您是否在任何地方关闭对话框?在那种情况下,你能复制崩溃改变方向吗? 我理解您的理论并感谢您的建议,但我认为这里并非如此。 1) 应用程序忽略方向变化。 2)我没有使用本机对话框。 Android 不“知道”它是一个对话框。它只是 Flash 显示列表中的内容。 好的,但是根据您的错误日志,您的应用在尝试关闭对话框时崩溃了。 作为一名程序员,我相信您已经见过很多错误消息不完全正确的情况:)

以上是关于来自 Adob​​e AIR 应用程序的 java.lang.RuntimeException的主要内容,如果未能解决你的问题,请参考以下文章

将参数从 Java 活动传递到 Adob​​e AIR 应用程序

如何在 Adob​​e AIR 中创建 Android 选项菜单? (不是Java)

如何使用 Adob​​e AIR 在 Android 中使用原生 java 代码制作应用程序?

对 Android 版 Adob​​e AIR 的想法?

在 Android/iOS 中使用 Adob​​e AIR 播放 AAC 流

Android SDK 到 Adob​​e Air