app小部件中的getAssets

时间:2012-12-16 22:04:07

标签: android

我的应用小部件使用数据库,并在资源目录中预先加载,活动会在首次运行时将其复制到数据库目录。

但是如果在此之前插入了widget,则会抛出异常,因为数据库尚不存在。

是否有文件的小部件检查,如果它不存在,从资产中获取并复制它而不是活动?!?

1 个答案:

答案 0 :(得分:1)

我真的推荐using SQLiteAssetHelper for packaging databases in an app。然后,您可以正常使用getReadableDatabase() / getWriteableDatabase()SQLiteAssetHelper将根据需要透明地从资产中解压缩数据库。

话虽如此,如果您确定自己想要这样做,请拨打getAssets() Context传递到onUpdate()的{​​{1}}。

请注意,在主应用程序线程上调用AppWidgetProvider的{​​{1}},就像您(希望)在后台线程中执行活动数据库I / O一样,您应该这样做为您的应用小部件。应用小部件的典型解决方案是让工作由onUpdate()启动的AppWidgetProvider完成。