• Android 进程数据库更新时机


    1.相关知识点:进程初始化顺序
    进程初始化顺序:ContentProvider(即数据库) > Application > Service;
    参考:https://www.jianshu.com/p/d52960e3f6f2

    2.相关知识点:SQLiteOpenHelper 和 ContentProvider 关系
    SQLiteOpenHelper 本身只是一个SQLite数据库实例,负责数据库的创建,是没有和进程绑定的生命周期的;
    ContentProvider 是四大组件之一,生命周期被系统管理,它的作用是对数据库封装一层接口,对外提供该数据库的读写功能,SQLite数据库实例一般在ContentProvider.onCreate方法中创建;优点是统一数据库访问入口,避免对进程/多线程访问等问题。

    3.数据库升级时,旧数据迁移/改造逻辑处理
    主要是旧数据改造时机问题,数据库更新后数据修改分两种情况:
    <一> 数据迁移
    这种情况数据对数据库数据的整体改造,数据的修改需要在数据库初始化结束之前完成。
    <二>数据修改
    只需要修改布局数据。这种情况有两种时机来修改数据:
    1. 在数据初始化结束之前完成(SQLiteOpenHelper.onUpgrade),这样的优点是在Application和Service等业务启动前完成数据修改,缺点是需要不能使用封装好的dao和manager类,因为dao是基于provider的,而provider是对DbHelper的封装;
    2. 在 Service 初始化时处理,优点是使用dao和manager类操作数据方便,缺点是需要保证在对外提供这些数据之前完成修改;(一套逻辑满足云端下载地图和本地已有地图的更新,如果不考虑代码开发成本,一般建议统一使用第一中方式)

  • 相关阅读:
    SEO 对企业的重要性
    C++基础入门(超详细)
    基于正负序双dq旋转坐标系锁相环 DDSRF-PLL模型
    第四次数据库作业
    【python练习】羊车门问题
    Redis持久化之RDB
    c++ 经典服务器开源项目 Tinywebserver的使用与配置(百度智能云服务器安装ubuntu18.04可用公网ip访问)
    硬件工程师秋招注意事项
    冰蝎逆向初探
    服务器中毒怎么办?企业数据安全需重视
  • 原文地址:https://blog.csdn.net/u013168615/article/details/127811953