源码简介

SQLite实质上是将数据写入一个文件,通常情况下,在应用的包名下面都能找到xxx.db的文件,拥有root权限的手机,可以通过adb shell,看到data/data/packagename/databases/xxx.db这样的文件。我们可以得知SQLite是文件级别的锁:多个线程可以同时读,但是同时只能有一个线程写。Android提供了SqliteOpenHelper类,加入Java的锁机制以便调用。如果多线程同时读写(这里的指不同的线程用使用的是不同的Helper实例),后面的就会遇到android.database.sqlite.SQLiteException: database is locked这样的异常。对于这样的问题,解决的办法就是keep single sqlite connection,保持单个SqliteOpenHelper实例,同时对所有数据库操作的方法添加synchronized关键字。完美解决sqlite的 database locked 或者是 error 5: database locked 问题
Android例子源码解决多线程读写sqlite数据库锁定问题

文件夹 PATH 列表
卷序列号为 591A51B3 3CD2:D088
C:.
│  javaapk.com文件列表生成工具.bat
│  JavaApk源码说明.txt
│  目录列表.txt
│  
└─SqlitePractice
    │  .classpath
    │  .project
    │  AndroidManifest.xml
    │  ic_launcher-web.png
    │  proguard-project.txt
    │  project.properties
    │  
    ├─.settings
    │      org.eclipse.jdt.core.prefs
    │      
    ├─assets
    │              
    ├─gen
    │  └─com
    │      └─sqlitepractice
    │              BuildConfig.java
    │              R.java
    │              
    ├─libs
    │      android-support-v4.jar
    │      
    ├─res
    │  ├─drawable-hdpi
    │  │      ic_action_search.png
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-ldpi
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-mdpi
    │  │      ic_action_search.png
    │  │      ic_launcher.png
    │  │      
    │  ├─drawable-xhdpi
    │  │      ic_action_search.png
    │  │      ic_launcher.png
    │  │      
    │  ├─layout
    │  │      activity_main.xml
    │  │      
    │  ├─menu
    │  │      activity_main.xml
    │  │      
    │  └─values
    │          strings.xml
    │          styles.xml
    │          
    └─src
        └─com
            └─sqlitepractice
                │  MainActivity.java
                │  
                └─database
                        DatabaseHelper.java
                        

0条源码讨论
发表评论

您必须登录才能评论.

©2013-2019 JavaApk.com· 鲁ICP备13032311号-1· Powered by WordPress· Theme by JavaApkTM · 网站地图.14 queries in 0.095 seconds