我有一个appwidgetprovider,当用户“点击”图标时,它会更新我的sqlite数据库。这是由onRecieve方法触发的,并且工作正常,但现在看来只有在活动首先创建记录时它才会起作用。
数据库由其自己的DBadapter
类处理,活动和appwidgetprovider都以相同的方式使用此类:
mydb = new DBadapter(this);
mydb = mydb.open();
当DBadapter在onCreate方法中创建数据库时,我无法理解为什么活动a)创建数据库和b)可以创建第一条记录但appwidgetprovider不能。
该活动对appwidgetprovider额外做的唯一其他用法是使用数据库游标来浏览数据库。
appwidgetprovider是否存在限制,如果活动尚未创建数据库,则无法实际创建数据库?如果是这样,这意味着应用程序必须在安装后首先启动,然后必须创建/删除虚拟记录,因为我测试了这一点并发现一旦创建活动然后删除了记录,appwidgetprovider就可以了写入数据库。
忘记提及onReceive调用私有方法来执行将记录添加到数据库的重复任务。从一开始就是这种情况,当记录已经存在时它可以工作但是当没有记录时它不会创建任何记录
答案 0 :(得分:0)
操作员错误在这里我发布了一个问题然后在这个帖子中回答:
所以我开始编写onReceive方法并愚蠢地编写了:
} else {
super.onReceive(ctx,intent);
}
部分代码然后在方法的底部留下了supper.onReceive,因为重新应用它现在正在写入数据库。对不起。
我垂头丧气:)