浅谈android应用启动数据迁移

来源:互联网 发布:泛雅网络教学平台下载 编辑:程序博客网 时间:2024/06/05 09:55

    应用启动,无可避免会涉及到数据的导入、初始化的工程,当然数据量小没有任何问题,直接insert就OK,在数据量大的情况下,记录一下几种数据初始化方法。

    1.批量插入:

        android使用的是sqlite数据库,sqlite是比较轻量级的数据库,在sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。

        假设我的应用初始5000条记录也就是要5000次读写磁盘IO操作。

       添加事务处理,把5000条插入作为一个事务

dataBase.beginTransaction();        //手动设置开始事务//数据插入操作循环dataBase.setTransactionSuccessful();        //设置事务处理成功,不设置会自动回滚不提交dataBase.endTransaction();        //处理完成 

    2.直接拷贝数据库(慎用):

        首先将准备好的静态数据库文件放到Android工程的res目录中的raw子目录下面,如果没有这个子目录的话就手动创建该目录,然后在应用的初始化阶段通过类似下面的代码将数据库文件拷贝到特定的目录下面,假设Android应用的包名是com.test,那么大部分情况下该应用默认的数据库文件位于/data/data/com.test/databases目录下面

String dbDirPath = "/data/data/com.test/databases";File dbDir = new File(dbDirPath);if(!dbDir.exists()) // 如果不存在该目录则创建    dbDir.mkdir();InputStream is = context.getResources().openRawResource(R.raw.data);FileOutputStream os = new FileOutputStream(dbDirPath+"/data.db");byte[] buffer = new byte[1024];int count = 0;while ((count = is.read(buffer)) > 0) {    os.write(buffer, 0, count);}is.close();os.close();

原创粉丝点击