java - 在 Android 应用程序上运行线程时出现致命异常

标签 java android

03-11 08:50:46.911 8208-8233/? E/AndroidRuntime: FATAL EXCEPTION: MX Notifier
                                             Process: com.example.gec1ply.situationalautonomy, PID: 8208
                                             java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
                                                 at android.os.Handler.<init>(Handler.java:200)
                                                 at android.os.Handler.<init>(Handler.java:114)
                                                 at android.app.Dialog.<init>(Dialog.java:119)
                                                 at android.app.AlertDialog.<init>(AlertDialog.java:200)
                                                 at android.app.AlertDialog$Builder.create(AlertDialog.java:1086)
                                                 at com.bosch.SituationalAutonomy.MainActivity.onCanMessageTimedOut(MainActivity.java:444)
                                                 at com.bosch.Platform.CAN.IO.OBDLink.OBDLinkMXNotifier.run(OBDLinkMXNotifier.java:39)
                                                 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
                                                 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
                                                 at java.lang.Thread.run(Thread.java:818)

这个问题的目标是理解错误,因为我不知道从哪里开始寻找。特别是因为第一个回调来自 Thread.run()

我能够成功地在模拟器上运行此应用程序,而不会引发任何异常,这使我相信该程序可能在与蓝牙连接时出现问题,但运行时期间的错误发生时间并不让我相信情况确实如此。

如果您需要任何代码示例,请评论并告诉我。谢谢:)

最佳答案

您正在尝试从非主线程的线程显示 AlertDialog。这样做会导致此错误。当您收到 onCanMessageTimedOut 时,您应该向主线程发送一条消息,以便显示您的 AlertDialog。如果您有对 Activity 的引用,则可以使用 runOnUiThread(Runnable) 例如

关于java - 在 Android 应用程序上运行线程时出现致命异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35942766/

相关文章:

android - LocalService 的好处?

android - 在 Android 上处理 Google Cloud Messaging 中的注册 ID 更改

java - 如何在启用 WTP 功能的情况下将 Maven 项目导入到 Eclipse Mylyn?

java - 如果 strings.xml 中存在未转义的撇号,如何使构建失败?

java - bindService 上的 NullPointerException getPackageName()

android - 如何使用 Kotlin 将 ByteArray 转换为 Int?

Java JDK - 为 macOS 下载时出现 404

java - 如何在 java 中使用 .readLine() 跟踪文件的读取?

java - org.apache.tiles.template.NoSuchAttributeException : Attribute 'body' not found

java - SWT:输入验证:防止输入下标和上标数字