【发布时间】:2015-11-13 01:18:47
【问题描述】:
我想在我的应用程序中添加一个SyncAdapter,以使用最少的电池来更新服务器端数据。为此,我需要让我的应用程序的主要活动将数据写入某个共享存储位置,然后 SyncAdapter 可以在 onPerformSync(...) 方法中读取。
我正在尝试找出存储这些数据的最佳位置并有以下问题:
- 当我的主要活动在前台线程中执行时,是否可以在后台线程中调用 SyncAdapter? IE。我是否需要担心 SyncAdapter 和我的主要活动之间的存储访问的线程安全?
- 在任何情况下,我的主要活动的两个实例可能处于"Created" 状态? IE。我是否需要担心我的主要活动的两个实例之间的线程安全?
假设我确实需要担心任何类型的线程安全,我对the different data storage options 有以下问题:
-
Files in internal storage:
- 我可以对内部存储中的文件执行任何原子操作吗?
- 文件锁怎么样?
-
SharedPreferences:
- 如果不同线程中的两个 editors 同时修改 Shared-Preferences 中的 不同!!! 键,两个同时提交是否会导致其中一个更改丢失?
-
SQL database:
- 如果我同时从不同线程打开同一个 SQL Lite 数据库文件,Android SQL Lite 框架是否线程安全?
- 还有其他方法可以在 SyncAdapter 和(多个实例(如果可能的话))主要活动之间共享数据吗?
另外:为了最大限度地提高我的应用的兼容性,我不想使用任何高于 5 级的 API。
【问题讨论】:
标签: android multithreading storage