java - 多核处理器上的 Android 错误

标签 java android multithreading multicore

我正在开发一个多线程应用程序,它使用线程和异步任务在多个线程上执行代码。

我有一个 AsyncTask,它向数据库添加一行,然后发送 API 请求。收到 API 请求回复后,它会更新数据库中的行。数据库适配器对象从 UI 线程传递到 AsyncTask。

不幸的是,AsyncTask 不适用于多核设备(例如 Asus Transformer)。第一次尝试将该行添加到数据库时出现空指针异常。

我不知道为什么会发生这种情况,但这可能与docs中的内容有关。在“内存可观察性”下。

最佳答案

谢谢大家的评论。

事实证明我确实有竞争条件。我没有意识到onActivityResult是在onResume之前调用的,所以事实证明,在较慢的手机上,可运行任务将在调用onResume之后执行(因此数据库已打开),但在较快的手机上,可运行任务将被执行将首先进行数据库操作并遇到 NPE。

谢谢!

关于java - 多核处理器上的 Android 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8746735/

相关文章:

java - 获取邮件 JPG 图像时不支持的数据类型

java - 单作者/单读者场景的 HashMap 或 ConcurrentHashMap?

java - 如何在 Java 中创建类型变量数组?

Java解析二叉树结构

java - 使用 EasyMock 创建列表

javascript - ionic2 项目的自定义 cordova 插件创建

javascript - react : onClick on Mobile (iPhone) requires 2 taps?

android - 如何使用 Gradle 命令行为 Android Studio 动态创建或设置 BuildConfigField

android - 在线程android中使用处理程序

c++ - 奇怪的线程堆栈