我的应用程序小部件使用数据库,它预加载在资产目录中,该活动在首次运行时将其复制到数据库目录。
但如果在此之前插入小部件,则会引发异常,因为数据库尚不存在。
无论如何,小部件检查文件,如果它不存在,从资产中获取它并复制它而不是活动?!?
我的应用程序小部件使用数据库,它预加载在资产目录中,该活动在首次运行时将其复制到数据库目录。
但如果在此之前插入小部件,则会引发异常,因为数据库尚不存在。
无论如何,小部件检查文件,如果它不存在,从资产中获取它并复制它而不是活动?!?
我真的推荐用于在应用SQLiteAssetHelper
程序中打包数据库。然后,您可以像往常一样使用getReadableDatabase()
/ ,如果需要,您可以透明地从资产中解压缩您的数据库。getWriteableDatabase()
SQLiteAssetHelper
话虽如此,如果您确定要自己执行此操作,请调用传入getAssets()
的.Context
onUpdate()
AppWidgetProvider
请注意,onUpdate()
您的 ofAppWidgetProvider
在主应用程序线程上被调用,所以就像您(希望)在后台线程中执行活动数据库 I/O 一样,您应该对您的应用程序小部件执行相同的操作。应用程序小部件的典型解决方案是让工作由IntentService
start by完成onUpdate()
。