【发布时间】:2017-07-05 11:49:55
【问题描述】:
我正在开发一个 Android 应用程序,其中我的 SQLite 数据库由 Service 和 IntentService 多次插入。
我在 MainActivity 中启动应用程序后立即启动我的服务。我的 MainActivity 有几个带有片段的选项卡。其中一个片段在其简历上激活 IntentService。这意味着我的 Service 和 IntentService 可能会同步运行。
Service 和 IntentService 插入的数据可能相同。这种情况可能会导致重复或异常。
我们是否可以假设Service和IntentService可以同时运行并在DataBase中产生不一致?
【问题讨论】:
-
@Doe 这在技术上是不正确的。服务不在线程上运行。
Service是一个类的实例。Service的方法在线程上运行。一些服务方法在主线程上运行,一些在工作(后台)线程上运行。您还可以创建管理自己的后台线程的服务。反驳您的说法的一个例子是onCreate()和onStartCommand()在 主线程 上的IntentService上被调用。IntentService中提供的唯一不在主线程上调用的方法是onHandleIntent()。
标签: android sqlite android-service intentservice