Android齐步走-2(2016-7-1)

来源:互联网 发布:二进制是谁发明的 知乎 编辑:程序博客网 时间:2024/04/25 19:56

1.Android事件分发

2.布局中存在WebView时,双击事件的分发

3.Android版本升级时数据库的处理

 我们在开发Android应用的时候,不可避免地要使用数据库。而数据库的结构在第一版的时候定下来,之后发布功能更新,或增加业务逻辑,原来的数据库结构可能就不适用了。

而数据库的变化大部分出现以下两种情况:1.添加或删除表2.添加或删除表中的字段

对于第一种情况,很简单,因为在数据库升级的时候会调用onUpgrade方法,在该方法中:

   1.添加表:db.executeSql();

 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {    if (oldVersion==1){      db.execSQL("CREATE TABLE user(_id integer primary key"       + "autoincrement, name varchar, age varchar)");      //insert data...    }  }

   2.删除表:

db.execSQL("DROP TABLE user");

对于第二种情况:

由于sqlite数据库对于Alert Table命令支持有限,只能在表末尾添加列,不能修改列定义,不能删除已有列,如果需要修改现有的表,只能:

1),复制原表

2),添加/删除字段

3),插入原有数据(需要注意处理修改的字段)

4),删除复制的表

需要注意:

  • 重命名表的SQL格式为ALTER TABLE <oldname> RENAME TO <newname>;

  • 导入新数据的insert into select语句中 不能出现values关键字 

  • 记得删除临时表 

  • 跨越版本的升级

    处理好了单个版本的升级,还有一个更加棘手的问题:如果应用程序发布了多个版本,以致出现了三个以上数据库版本, 如何确保所有的用户升级应用后数据库都能用呢?有两种方式:

    方式一:确定 相邻版本 的差别,从版本1开始依次迭代更新,先执行v1到v2,再v2到v3……

    方式二:为 每个版本 确定与现在数据库的差别,为每个case撰写专门的升级代码。

    方式一的优点是每次更新数据库的时候只需要在onUpgrade方法的末尾加一段从上个版本升级到新版本的代码,易于理解和维护,缺点是当版本变多之后,多次迭代升级可能需要花费不少时间,增加用户等待;

    方式二的优点则是可以保证每个版本的用户都可以在消耗最少的时间升级到最新的数据库而无需做无用的数据多次转存,缺点是强迫开发者记忆所有版本数据库的完整结构,且每次升级时onUpgrade方法都必须全部重写。


4.如何用命令导出数据库。。(转)

  1、设置环境变量:添加 X:\android-sdk-windows\platform-tools (根据实际路径修改) 到系统环境变量path里,打开cmd里输入“adb”验证是否设置成功;

   2、导出数据库:已连接手机或打开模拟器情况下,cmd输入以下两行命令导出“通讯录”和“短信”的数据库:(真机上可能需要root权限)

   adb pull  /data/data/com.android.providers.contacts/databases/contacts2.db   x:\android_db

    adb pull  /data/data/com.android.providers.telephony/databases/mmssms.db   x:\android_db



0 0