【发布时间】:2013-01-10 19:42:38
【问题描述】:
我有一个 appwidgetprovider,当用户“点击”图标时,它会更新我的 sqlite 数据库。这是由 onRecieve 方法触发的,并且工作正常,但现在看来,它仅在活动首先创建记录时才会工作。
数据库由它自己的DBadapter 类处理,活动和appwidgetprovider 都以相同的方式使用这个类:
mydb = new DBadapter(this);
mydb = mydb.open();
由于 DBadapter 在 onCreate 方法中创建数据库,我无法理解为什么活动 a) 创建数据库和 b) 可以创建第一条记录但 appwidgetprovider 不能。
该活动对 appwidgetprovider 所做的唯一其他用途是使用数据库游标在数据库中导航。
如果 appwidgetprovider 尚未由 Activity 创建,它是否无法实际创建数据库?如果是这样,这意味着应用程序必须在安装后首先启动,然后必须创建/删除虚拟记录,因为我对此进行了测试,发现一旦活动创建然后删除记录,appwidgetprovider 就可以写入数据库。
忘了说 onReceive 调用了一个私有方法来完成将记录添加到数据库的重复任务。从一开始就是这种情况,当记录已经存在时它可以工作,但是当没有记录时它不会创建任何记录
【问题讨论】:
-
Android 模拟器会导致不稳定的行为吗?我已经删除了调用写入数据库的方法的代码,并将 Toast 显示放在调用它的部分中,首先它们没有出现,我也正在创建第二个 appwidgetprovider 但这还没有那时在 Manifest 中设置。现在我已经完全设置了第二个,Toast 显示正在工作,所以我不知道发生了什么,我需要放回数据库部分,看看现在是否有效
-
嗨,也许找到你的解决方案 here
标签: android sqlite appwidgetprovider