我有一个 appwidgetprovider,当用户“单击”图标时,它会更新我的 sqlite 数据库。这是由 onRecieve 方法触发的,并且工作正常,但现在看来,它仅在活动首先创建记录时才有效。
数据库由它自己的DBadapter
类处理,活动和 appwidgetprovider 都以相同的方式使用这个类:
mydb = new DBadapter(this);
mydb = mydb.open();
由于 DBadapter 在 onCreate 方法中创建数据库,我无法理解为什么活动 a) 创建数据库和 b) 可以创建第一条记录但 appwidgetprovider 不能。
该活动对 appwidgetprovider 所做的唯一其他用途是使用数据库游标在数据库中导航。
如果活动尚未创建,appwidgetprovider 是否存在无法实际创建数据库的限制?如果是这样,这意味着应用程序必须在安装后首先启动,然后必须创建/删除虚拟记录,因为我对此进行了测试,发现一旦活动创建然后删除记录,appwidgetprovider 就可以写入数据库。
忘了提到 onReceive 调用一个私有方法来执行将记录添加到数据库的重复任务。从一开始就是这种情况,当记录已经存在时它可以工作,但是当没有记录时它不会创建任何记录