在从alarmmanager运行的线程中使用sqlite

时间:2013-10-08 19:52:00

标签: android multithreading sqlite alarmmanager

我想创建一个简单的服务(基于ApiDemos \ app \ AlarmService_Service示例) 在服务的线程中,我想每15Sec向本地数据库添加一条记录。

但问题是我创建的DataSource(在http://www.vogella.com/articles/AndroidSQLite/article.html文章的帮助下)需要Context个对象才能启动DataSource。

在不久的将来,我会希望这个例子的服务也可以在设备启动时运行。 所以我的qustion是如何在没有Context的情况下使用sqlite?

1 个答案:

答案 0 :(得分:2)

  

所以我的qustion是如何在没有Context的情况下使用sqlite?

Service继承自Context,因此您拥有Context。请记住,如果您希望其他线程也使用数据库,则需要单个SQLiteOpenHelper(或SQLiteDatabase)。

顺便说一下,这个样本很可能是Google发布过的最糟糕的样本。我不完全清楚为什么用户希望你在后台“每15Sec将一条记录添加到本地数据库”,但该示例:

  • 将无法保持设备唤醒
  • 无特殊原因显示Notification
  • 您是否已经推出了自己的主题,而不是使用IntentService为您处理
  • 不处理发送到服务的多个命令
  • 基本上没有意义Binder

AlarmManager_WAKEUP警报一起使用的正确方法是使用my WakefulIntentServicethe Android Support package's WakefulBroadcastReceiver。 我已使用AlarmManagera sample using WakefulIntentService发布了an equivalent sample using WakefulBroadcastReceiver