在Android中从wakeful intent服务向数据库插入数据

时间:2016-01-25 17:12:50

标签: android database google-cloud-messaging background-service

在Android中使用数据库需要一些帮助。

我正在尝试将数据插入MoEngage doWakefulWork() WakefulIntentServiceprivate void addToDb(Bundle extras) { String msgDetails = "my string"; ContentValues values = new ContentValues(); if (null != msgDetails) { values.put("msg", msgDetails); } Uri newRecord = App.context.getContentResolver().insert(MoEDataContract.MessageEntity.getContentUri(App.context), values); App.context.getContentResolver().notifyChange(newRecord, (ContentObserver) null); if (MoEHelperUtils.isDebugEnabled()) { if (null != newRecord) { Log.d(MoEHelper.TAG, "PushMessagingListener: added new record with entry: " + newRecord); } else { Log.d(MoEHelper.TAG, "PushMessagingListener: FAILED to add new record with entry: "); } } } 提供的数据库中。

这是我将数据插入db:

的功能
doWakefulWork()

但是,当我打开应用程序并尝试查询数据库时,游标返回0计数。

如果我仅在Cursor cursor = MoEController.getAllMessages(App.context); 内添加值后尝试查询,则光标会在数据库中显示该值。

dict!.objectForKey(“Questions”)

我在这里错过了什么吗?任何帮助,将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:1)

请查看https://stackoverflow.com/a/3486373/1349601

看起来您应该创建一个事务并将其标记为成功。

答案 1 :(得分:0)

以下是有关如何通过ContentValue在Android上插入数据的示例:

Context可以为null或不为null。我发现这种可能性是因为示例代码中的Context在Github中插入数据时为空。所以,我假设'App'可能正在使用Singleton模式。

您可以查看此link

  

如果您的SQLiteOpenHelper由Content Provider使用,则无效。因为在Application的onCreate()之前调用了Content Provider的onCreate()。