Stetho增加SD卡路径的数据库
Stetho簡介
Chrome的Developer Tools對于WEB開發者來講幾乎是一個神器,而Chrome Store里也有無奇不有的插件,如果Chrome能調試應用應該是一件美好的事,而Facebook開源的一個工具Stetho讓Chrome調試Android應用不再是一個夢。安卓在調試時,有時候需要查看數據庫,SharePreference等,而這個前提是必須root,另一方面,andoird的網絡方面的抓包調試顯得很困難,而這一切,Stetho都為我們輕輕松松地解決。除了使用android集成環境里的工具查看view樹,使用Stetho也可以做到。
Stetho使用
具體使用請見這里使用詳解,
1.4版本添加SD卡路徑數據庫
1.4版本Stetho 在chrome里默認只能/data/data下面的數據庫的名稱,我們的項目中數據庫是指定在SD卡路徑下的,怎么添加其他路徑的數據庫呢?
查看DefaultInspectorModulesBuilder(context).finish()的代碼
DefaultInspectorModulesBuilder(context).finish()
DataBase會首先添加mDatabaseFilesProvider,找到mDatabaseFilesProvider被設置的地方,DatabaseFilesProviders提供了數據庫的列表,Stetho默認使用的是DefaultDatabaseFilesProvider類,使用系統mContext.databaseList()提供數據庫列表,我們只要實現自己的DefaultDatabaseFilesProvider的即可添加新的數據庫列表。
DefaultDatabaseFilesProvider
實現好自己的DefaultDatabaseFilesProvider后,就可以在chrome端看到相應的數據庫了,我們項目中新增了SD卡路徑下的數據,But , 當我們在chrome端點開新增的數據查看時,app直接崩潰,報錯是 數據庫路徑無法打開,查看日志發現 我們添加的數據庫路徑是SD卡路徑的,但是Stetho打開的數據路徑居然是/data/data目錄下的~.~~.~~.~一臉懵逼~.~~.~~.~
再重頭看DefaultInspectorModulesBuilder(context).finish()的代碼,發現DataBase創建時使用了SqliteDatabaseDriver類,在SqliteDatabaseDriver中找到打開數據庫的代碼
DefaultInspectorModulesBuilder(context).finish()
SqliteDatabaseDriver
~.~,這個默認就是/data/data, chrome端回傳的只傳了個數據庫文件名。
怎么解決
1.繼承DatabaseDriver,重寫openDatabase(String databaseName)方法支持mDatabaseFilesProvider中定義的數據庫路徑查找
mDatabaseFilesProvider
DatabaseDriver
2.替換DefaultInspectorModulesBuilder(context).finish()返回列表中DataBase對象。
DefaultInspectorModulesBuilder
完整代碼已上傳GitHub
SkethoWithSdCard
1.5版本
Stetho1.5.0 終于支持添加自定義的數據庫路徑了,但是在項目和greenDao配合使用過程中遇到了幾個問題,在此記錄一下
1.添加SD卡路徑數據庫
1.5.0已經支持自定數據庫路徑功能,只需要實現自己的DatabaseFilesProvider即可。
2. DBLocked問題
Stetho調試時候數據庫時,都會重新開啟一個SqliteDatabase,greenDao也會啟動一個SqliteDatabase,所以會經常遇到DBLocked的問題,解決方法就是 與greenDao使用同一個SqliteDatabase,需要重新實現DefaultDatabaseConnectionProvider類,通過自己定義的DBmanager獲取統一的SqliteDatabase.
3. 操作已經 closed的數據庫
Stetho調試時候數據庫時每個命令結束之后會都會關閉數據庫,導致greenDao數據操作問題,解決方法是 注釋掉關閉數據庫的地方,實現自己的MySqliteDatabaseDriver,把原來的SqliteDatabaseDriver代碼粘貼過來,把下面兩個方法中的database.close();注釋掉.
StethoWrapper
可關注微信二維碼共同交流
總結
以上是生活随笔為你收集整理的Stetho增加SD卡路径的数据库的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: new Date处理日期格式及兼容浏览器
- 下一篇: 基于Kinect深度图像采集和SLAM室