Android - sqlite 内容提供程序和多线程

2023-11-27

我对内容提供商有点困惑。 如果我的应用程序中有多个活动,它们是否都会获得自己的内容提供程序实例?它本质上只是一个类/接口?

在一项活动中,我将有许多线程同时写入数据库。如何处理允许一个线程一次写入的问题?

我是否只是捕获 SQLiteDatabaseLockedException,让线程休眠然后重试? 或者,还有更好的方法?

当活动暂停/被销毁时,数据库锁是否会被释放?如果是这样,我可以针对内容提供者本身创建一个同步锁吗?


如果您直接使用数据库并且有来自不同线程的多个编写器,则可能会遇到并发问题。

The ContentProvider可以同时从多个程序访问,因此必须实现线程安全的访问。最简单的方法是使用关键字synchronized在所有方法前面ContentProvider,这样同一时间只有一个线程可以访问这些方法。

如果您不要求Android同步数据访问ContentProvider,设置android:multiprocess=true属性在你的<provider>AndroidManifest.xml 文件中的定义。这允许在每个客户端进程中创建提供程序的实例,从而无需执行进程间通信 (IPC)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android - sqlite 内容提供程序和多线程 的相关文章

  • Facebook4j API:搜索

    我正在使用 Facebook4j 通过关键字获取状态 facebook4j conf ConfigurationBuilder fac new facebook4j conf ConfigurationBuilder fac setDebu
  • putExtra() 和 setData() 之间的区别

    putExtra 和 setData 有什么区别 我已经阅读了 android 文档 但没有太大帮助 还有之前的一个问题Intent setData 与 Intent putExtra https stackoverflow com que
  • 手机重置后AlarmManager闹钟不触发

    在我的应用程序中 用户加入一个计划 然后第二天中午会出现警报通知 这是我的代码 首先 我在 AlarmManager 中设置一个闹钟 如下所示 set alarm to the next day 12 00 noon of the join
  • 使用Picasso从url保存图像?

    我正在尝试使用 API Picasso 保存图像 为了做到这一点 我正在尝试使用Target保存 但我无法完成这项工作 我怎么能这样做呢 Trying save image public static void imageDownload
  • Firebase Messaging FCM 在可配置的时间间隔内分发

    当您使用 FCM 向给定应用程序的所有设备发送推送时 这可能会导致许多用户同时打开他们的应用程序 从而导致大量服务器轮询 从而导致负载峰值 有没有一种方便的方法可以在给定的时间间隔内分发消息以进行计划推送 最后 我们找到了一种可能的方法 通
  • 尝试获取屏幕上绘制的每个随机圆圈的 x、y 坐标

    您好 我正在制作一款游戏 该游戏将在屏幕上创建随机圆圈 随机创建的圆圈的值为红色或绿色 我的问题是 我希望不仅能够确定用户何时单击其中一个圆圈 而且还能够确定他们最终单击的圆圈 红色或绿色 下面是我的代码 我的主要问题是试图找到将要绘制的圆
  • 有人可以给出一个 android 中 webview 实现的确切例子吗

    嗨 我正在使用开发 Android 应用程序WebView执行 我跟着官方安卓教程 http developer android com resources tutorials views hello webview html 在 Ecli
  • AltBeacon 服务位于单独的 Android 进程中

    我需要帮助 有一个适用于 Xamarin Android 的应用程序 在其中 启动了一个与 AltBeacon 库配合使用的服务 在此服务中 创建了一个线程 在该线程中不断扫描信标 服务以 StartForeground 启动 该服务应该有
  • 如何在其他呼叫运行时以编程方式合并呼叫(电话会议)

    我的要求是这样的 假设我当时正在拨打一个号码 并且我想以编程方式拨打另一个号码 到目前为止 我所做的是 当某些呼叫已经进行时 我能够呼叫特定号码 例如 假设我正在拨打号码 123 1 分钟后 通过使用Alarm Manger我触发一个事件来
  • org.apache.http.conn.HttpHostConnectException:在 android 中连接到 http://localhost 被拒绝

    我正在制作一个应用程序 在执行它时将图像上传到服务器并将其数据库更新到android中的服务器 它显示错误 Connection to http localhost refused 还有更多错误 我研究了这个问题 发现不是提供 URL 连接
  • 该项目可能使用的 Gradle 版本不包含“compileSdkVersion()”方法

    当我尝试运行最初在 Eclipse ADT 上创建的项目时 我遇到了这个问题 Error 17 0 Gradle DSL method not found compileSdkVersion Possible causes ul li Th
  • 垂直从上到下线手势检测器

    我用的是 手势工具 注意到对于垂直从上到下的线无法检测 因为我在代码中使用生成的手势文件 如下所示 但无法检测垂直从上到下的线手势检测 import java util ArrayList import android app Activi
  • Android 解析 JSON 卡在 get 任务上

    我正在尝试解析一些 JSON 数据 我的代码工作了一段时间 我不确定我改变了什么突然破坏了代码 当我运行代码时 我没有收到任何运行时错误或警告 我创建一个新的 AsyncTask 并执行它 当我打电话时 get 在这个新任务中 调试器在此行
  • 调整 SwipeRefreshLayout 高度,将 View 置于其底部

    I have SwipeRefreshLayout里面一个RelativeLayout 问题是SwipeRefreshLayout占据了屏幕上的所有位置 我需要放置一个视图after这个观点 看图片 https i stack imgur
  • Android OptionsMenu问题,背景始终透明

    我的选项菜单总是不显示背景 背景是透明的 有谁知道如何摆脱这个 我的失败起源活动是从另一个自定义活动扩展的 我在 eclipse 上有这个项目 选项菜单工作正常 但自从我迁移到 AndroidStudio 后 选项菜单始终是透明的 我尝试更
  • 分离 Fragment 和删除 Fragment 有什么区别?

    在 Android 文档中碎片交易 http developer android com reference android app FragmentTransaction html我注意到两种非常相似的方法 detach and remo
  • 通知操作而不启动新活动?

    我计划提供一个包含两个操作的提醒通知 一个用于批准登录请求 一个用于拒绝登录请求 通过单击这些操作中的任何一个 我希望向我的服务器发出 HTTP 请求 最重要的是 我不想启动新的 Activity 或根本不想将用户重定向到我的应用程序 Co
  • 如何向开关对象添加/更改波纹效果

    下面是我自定义的开关 红圈是默认的波纹效果 我发现设置一个波纹可绘制作为开关的背景 控制波纹的颜色
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • 如何检测日期选择器对话框的取消单击?

    我正在使用以下 日期选择器的示例 http developer android com guide tutorials views hello datepicker html http developer android com guide

随机推荐

  • 使用意图编辑日历事件不起作用

    好的 我在这里非常精确地阅读了文档 http developer android com guide topics providers calendar provider html update event它写的是这样的 Here is a
  • winrt中如何检测滚动查看器是否到达底部

    我想知道检测 ScrollViewer 是否到达底部 右侧等的最佳方法是什么 我想我可以通过使用 PointerWheelChanged 鼠标和 ManipulationDelta 触摸来实现这一点 在这些事件处理程序中 我可以记录 Hor
  • 将变量从文本文件加载到 bash 脚本中

    是否可以将文本文件中的新行加载到 bash 中的变量中 文本文件是什么样子的 EXAMPLEfoo EXAMPLEbar EXAMPLE1 EXAMPLE2 EXAMPLE3 EXAMPLE4 变量变成 1 EXAMPLEfoo 2 EXA
  • 为什么 PyQt 在没有信息的情况下崩溃? (退出代码 0xC0000409)

    我正在尝试使用 PyQt 开发一个软件 但我经常陷入没有调试信息的软件崩溃 只有退出代码 0xC0000409 我正在使用 QThread 并且编写了一个这样的系统 class serialThreadC QThread updateOut
  • 如何使用 PHP 下载 FTP 上的最新文件?

    FTP服务器上有一些文件 该服务器上的任何时间都在上传新文件 我想下载最后一个文件 如何从该服务器获取上次上传的文件 所有文件都有不同的名称 我使用以下脚本下载一个文件 conn ftp connect ftp testftp com or
  • 使用 HuggingFace 微调 T5 进行汇总时出现关键错误

    我正在尝试微调 T5 变压器进行汇总 但收到一条关键错误消息 KeyError Indexing with integers to access backend Encoding for a given batch index is not
  • 如何在 C 程序中不使用删除系统调用来删除文件?

    我一直很好奇如何rem在 Linux 中工作并尝试编写我自己的C可以删除文件的代码 但是当我搜索答案时 我只得到了正在使用的程序remove 系统调用 有没有其他方法可以在不使用系统调用的情况下完成此任务 例如编写自己的代码来完成这项工作
  • XML 阅读器类中令人讨厌的新行和空格

    我正在使用博主编写的类 http troybrant net blog 它接受一个 XML 字符串并输出一个 NSDictionary 它很漂亮 工作完美 除了我最终在许多元素值的开头出现了奇怪的换行符和空格配置 我一直不明白为什么 我将课
  • 如何在index.jsp上加载servlet

    有没有办法调用servletindex jsp 我的欢迎文件是index jsp 我需要通过 servlet 填充下拉列表值index jsp被打开 我尝试设置
  • PhoneGap/Cordova Android 开发

    更新1 这就是我最终所做的一切 sudo aptitude install y python software properties python g make sudo add apt repository y ppa chris lea
  • 如何在 React JS 应用程序中为 Azure Active Directory B2C 设置重定向 URL 到 b2clogin.com

    我正在开发 React js 应用程序 并将使用 azure adb2c 来确保安全 参考 要在用户流中启用 javascript 似乎我必须将重定向网址更改为b2clogin com 我已经提到过这个https learn microso
  • Spark 将 csv 列中的空值视为空数据类型

    我的 Spark 应用程序读取 csv 文件 使用 sql 将其转换为不同的格式 并将结果数据帧写入不同的 csv 文件 例如 我输入csv如下 Id FirstName LastName LocationId 1 John Doe 123
  • 如何在特定时间使用 FFMPEG 将音频添加到现有视频?

    我有包含 10 分钟视频的视频文件 avi 我还有包含 1 分钟声音的音频文件 wav 我需要将音频添加到现有视频中 但音频需要在视频一分钟后开始 怎么做 如果可能的话 更喜欢使用 ffmpeg 已经尝试这个查询 延迟 30 秒 i vid
  • Angularjs 触发国家依赖

    有人可以帮我制作国家 州下拉依赖项的示例吗 我特意以这种方式创建 JSON 因为我希望依赖项是通用的 这样我就可以将它应用到任何下拉列表中 同时仅使用元数据而不是 HTML Here s a link查看 JSFiddle 中的代码示例 H
  • 如何按一列对 pandas 数据框进行排序

    我有一个像这样的数据框 0 1 2 0 354 7 April 4 0 1 55 4 August 8 0 2 176 5 December 12 0 3 95 5 February 2 0 4 85 6 January 1 0 5 152
  • 无法将新文件添加到 Egit 中的存储库

    我将 Egit 与 Eclipse Juno 一起使用 我与本地存储库合作 一切都很好 甚至添加 GitHub 存储库似乎也没有问题 我将其添加到 Remotes 下的本地存储库中 因此我可以轻松地将提交推送到 github 但过了一段时间
  • Web.Config 调试/发布

    我知道 Visual Studio 2010 中的 web config 提供了从数据库从调试模式切换到发布模式的功能 这是我的 Web Release config
  • 监控 iPhone 应用程序上的 Google Analytics 请求

    我正在尝试监控 iPhone 应用程序上的 Google Analytics 请求 但由于某种原因 我没有看到任何 GA 请求 不过 我可以在谷歌分析界面上看到并唯一识别流量 我尝试过使用多种技术 包括使用 Fiddler Charles
  • 刷新 iframe

    如何刷新 iframe 例如 我单击此 iframe 中的 视频 然后单击按钮刷新 iframe 我希望刷新 iframe 时位于该 视频 页面上 由于单源政策 您无法刷新其中的内部文档 您是否尝试过更改 iframesrc属性并添加随机
  • Android - sqlite 内容提供程序和多线程

    我对内容提供商有点困惑 如果我的应用程序中有多个活动 它们是否都会获得自己的内容提供程序实例 它本质上只是一个类 接口 在一项活动中 我将有许多线程同时写入数据库 如何处理允许一个线程一次写入的问题 我是否只是捕获 SQLiteDataba