源碼簡介

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 · 網站地圖.12 queries in 0.061 seconds


竟彩足球比分直播