0

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

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

在不久的将来,我希望像这个示例这样的服务在设备启动时也能运行。所以我的问题是如何在没有上下文的情况下使用 sqlite?

4

1 回答 1

2

所以我的问题是如何在没有上下文的情况下使用 sqlite?

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

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

  • 将无法保持设备唤醒
  • Notification无特殊原因显示 a
  • 你有没有滚动你自己的线程而不是使用IntentService为你处理的线程
  • 不处理发送到服务的多个命令
  • 基本上毫无意义Binder
  • 等等

AlarmManager使用警报的正确方法_WAKEUP是使用WakefulIntentService的或Android 支持包的WakefulBroadcastReceiver. 我已经发布了一个使用WakefulIntentServicewith的示例AlarmManager一个使用WakefulBroadcastReceiver.

于 2013-10-08T20:04:09.487 回答