0

我的应用程序小部件使用数据库,它预加载在资产目录中,该活动在首次运行时将其复制到数据库目录。

但如果在此之前插入小部件,则会引发异常,因为数据库尚不存在。

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

4

1 回答 1

1

我真的推荐用于在应用SQLiteAssetHelper程序中打包数据库。然后,您可以像往常一样使用getReadableDatabase()/ ,如果需要,您可以透明地从资产中解压缩您的数据库。getWriteableDatabase()SQLiteAssetHelper

话虽如此,如果您确定要自己执行此操作,请调用传入getAssets()的.ContextonUpdate()AppWidgetProvider

请注意,onUpdate()您的 ofAppWidgetProvider在主应用程序线程上被调用,所以就像您(希望)在后台线程中执行活动数据库 I/O 一样,您应该对您的应用程序小部件执行相同的操作。应用程序小部件的典型解决方案是让工作由IntentServicestart by完成onUpdate()

于 2012-12-16T22:10:59.667 回答