【问题标题】:How synchronized on activity work, given activity is recreated on orientation change活动如何同步工作,给定活动在方向变化时重新创建
【发布时间】:2015-10-07 05:51:58
【问题描述】:
我有一个活动,在 onCreate 函数中我创建了一个线程,它从 XML 文件读取并填充数据库并填充成员 dataStructures。
我创建了同步方法来执行 DB 填充和 DataStructure 填充。
- 由于锁定在 Activity[同步方法] 上,当由于方向更改或任何配置更改而重新创建 Activity 时是否会导致任何问题?
在这里使用同步方法是否正确?还是应该使用同步块?
如何处理或注意数据库不损坏?
如何确保即使在活动重新创建时也只存在一个 DataBaseHelper 实例?
【问题讨论】:
标签:
android
multithreading
android-activity
【解决方案1】:
如果您想做我认为您想做的事,那么我建议您执行以下操作:
创建一个线程(HandlerThread 名为 DbAsyncThread 或其他)来处理所有 db 方法的所有方法。
方法应该使用同步块。有公共静态方法时我使用的同步方法。它始终取决于您想要实现的目标。
可以通过异常处理的不正确的 db 状态。如果出现异常,您将其抛出或将其传递给 ui,以便通知用户或您。
使用回调。如果有问题通过回调通知问题。如果不涉及上下文,则应该没有任何问题。