Android加载固定内容数据库的妙法
经常我们需要使用一些事先做好内容的数据库,比如字典等, 这就要加载已有的数据库文件,通常把它们放在assets 或者raw中,在程序运行时copy到程序内部空间:/data/data/package/my_app/databases, 详细的做法看这里。
但是这样有个缺点,当文件较大时会占用较长的时间,用户难免会有点小着急。
我们可以这样HACK来把copy的环节省去:
1 把数据库文件(如MYDB.db) 放到PROJECT/libs/armeabi/ 改名为libMYDB.db.so(注意前面必需加”lib")。
2 用这样的方式打开:
- DATABASE_PATH = "/data/data/" + packageName + "/lib/";
- SQLiteDatabase db = SQLiteDatabase.openDatabase(DATABASE_PATH + libMYDB.db.so, null, SQLiteDatabase.OPEN_READONLY | SQLiteDatabase.NO_LOCALIZED_COLLATORS);
这样等程序一安装完就可以使用数据库了,其原理是把数据库文件伪装成lib库文件,程序在安装时会自动copy到/data/data/package/lib/,省去了我们自己的copy过程。
目前我测试了读操作,写操作还有待测试。
(全文完)
相关推荐
zbcaicai 2020-05-26
姚强 2020-02-14
wintershii 2020-01-18
whyname 2019-12-23
sunshunli 2012-07-11
Arthur 2011-01-18
bigdatazx 2010-11-05
luoj 2011-08-23
happinessaflower 2011-08-12
fuzhangpeng 2011-08-09
LiLiLiLaLa 2011-06-11
sunshunli 2013-12-31
longhushi 2013-12-29
airfling 2011-10-27
bigdatazx 2011-09-22
tsolin 2015-03-18
一夜长风 2015-03-18
sunsi00 2012-01-31
LiLiLiLaLa 2011-12-29