让class只有一个实例的例子
最近在学习android的webkit,看到一些自己认为是好的代码或者方式就把它记录下来,方便以后复习与借鉴。
WebViewDatabase是一个单实例对象,通过getInstance方法获取WebViewDatabase的实例。WebViewDatabase是WebKit模块中的内部对象,仅供WebKit框架内部使用。
private static WebViewDatabase mInstance = null; private WebViewDatabase() { // Singleton only, use getInstance() } public static synchronized WebViewDatabase getInstance(Context context) { if (mInstance == null) { mInstance = new WebViewDatabase(); mDatabase = context.openOrCreateDatabase(DATABASE_FILE, 0, null); // mDatabase should not be null, // the only case is RequestAPI test has problem to create db if (mDatabase != null && mDatabase.getVersion() != DATABASE_VERSION) { mDatabase.beginTransaction(); try { upgradeDatabase(); mDatabase.setTransactionSuccessful(); } finally { mDatabase.endTransaction(); } } if (mDatabase != null) { // use per table Mutex lock, turn off database lock, this // improves performance as database's ReentrantLock is expansive mDatabase.setLockingEnabled(false); } mCacheDatabase = context.openOrCreateDatabase(CACHE_DATABASE_FILE, 0, null); // mCacheDatabase should not be null, // the only case is RequestAPI test has problem to create db if (mCacheDatabase != null && mCacheDatabase.getVersion() != CACHE_DATABASE_VERSION) { mCacheDatabase.beginTransaction(); try { upgradeCacheDatabase(); bootstrapCacheDatabase(); mCacheDatabase.setTransactionSuccessful(); } finally { mCacheDatabase.endTransaction(); } // Erase the files from the file system in the // case that the database was updated and the // there were existing cache content CacheManager.removeAllCacheFiles(); } if (mCacheDatabase != null) { // use InsertHelper for faster insertion mCacheInserter = new DatabaseUtils.InsertHelper(mCacheDatabase, "cache"); mCacheUrlColIndex = mCacheInserter .getColumnIndex(CACHE_URL_COL); mCacheFilePathColIndex = mCacheInserter .getColumnIndex(CACHE_FILE_PATH_COL); mCacheLastModifyColIndex = mCacheInserter .getColumnIndex(CACHE_LAST_MODIFY_COL); mCacheETagColIndex = mCacheInserter .getColumnIndex(CACHE_ETAG_COL); mCacheExpiresColIndex = mCacheInserter .getColumnIndex(CACHE_EXPIRES_COL); mCacheMimeTypeColIndex = mCacheInserter .getColumnIndex(CACHE_MIMETYPE_COL); mCacheEncodingColIndex = mCacheInserter .getColumnIndex(CACHE_ENCODING_COL); mCacheHttpStatusColIndex = mCacheInserter .getColumnIndex(CACHE_HTTP_STATUS_COL); mCacheLocationColIndex = mCacheInserter .getColumnIndex(CACHE_LOCATION_COL); mCacheContentLengthColIndex = mCacheInserter .getColumnIndex(CACHE_CONTENTLENGTH_COL); } } return mInstance; }
WebViewDatabase db = WebViewDatabase.getInstance(this);
相关推荐
echoes 2020-08-20
RainyX 2020-07-26
sunshineboyleng 2020-07-08
程序员俱乐部 2020-06-28
zhanghao 2020-06-16
e度空间 2020-06-11
sunshineboyleng 2020-06-04
bertzhang 2020-06-02
xtuhcy 2020-05-20
tichangde 2020-05-19
sunshineboyleng 2020-04-27
coulder 2020-03-07