日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android --- SharePreference 存储与数据库存储的效率分析

發(fā)布時間:2025/3/21 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android --- SharePreference 存储与数据库存储的效率分析 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文鏈接:https://blog.csdn.net/MacaoPark/article/details/114680449

前言

最近到了一家公司,跟一個同事做項目,比如常規(guī)的一些操作用SharedPreferences就很好搞定,他跟我說SharedPreferences 會影響性能說了一堆… 難道別的存儲方式就不耗費性能嗎?不消耗內(nèi)存嗎?

有關Android存儲

Android中的數(shù)據(jù)存儲方案主要有:共享首選項(SharedPreferences)、內(nèi)部存儲(Internal Storage)、外部存儲(External Storage)、SQLite數(shù)據(jù)庫、 網(wǎng)絡存儲 靜態(tài)變量等

SharedPreferences 共享首選項

先說一下SharedPreferences 簡稱SP , SharedPreferences類提供了一個通用框架,使開發(fā)者能夠以鍵值對的方式,永久性的保存一些原始數(shù)據(jù)類型的數(shù)據(jù),包括:布爾值,浮點值,整型值,長整型和字符串,被保存的數(shù)據(jù)可以跨多個用戶會話永久保留(即使應用已經(jīng)終止)。

為什么使用 SP 它的優(yōu)點是什么? 使用SP 為Android開發(fā)者提供了更為便利的存儲方式,但是相對的他也是有一些缺點的。

當我們首次創(chuàng)建 SharedPreferences 對象時,會根據(jù)文件名將文件下內(nèi)容一次性加載到 mMap(SharedPreferencesImpl 成員) 容器中,每當我們 edit 都會創(chuàng)建一個新的 EditorImpl 對象,當修改或者添加數(shù)據(jù)時會將數(shù)據(jù)添加到 mModifiled (EditorImpl 成員)容器中,然后 commit 或 apply 操作比較 mMap 與 mModifiled 數(shù)據(jù)修正 mMap 中最后一次提交數(shù)據(jù),然后寫入到文件中。而 get 直接從 mMap 中讀取。試想如果此時你存儲了一些大型 key 或 value 它們會一直存儲在內(nèi)存中得不到釋放。

(1) 不要存放大的 key 和 value 在 SharedPreferences 中,否則會一直存儲在內(nèi)存中得不到釋放,內(nèi)存使用過高會頻發(fā)引發(fā)GC,導致界面丟幀甚至ANR
(2) 不相關的配置選項最好不要放在一起,單個文件越大讀取速度則越慢。
(3) 讀取頻繁的 key 和不頻繁的 key 盡量不要放在一起(如果整個文件本身就較小則忽略,為了這點性能添加維護得不償失)。
(4) 盡量不要存放 JSON 和 HTML,這種可以直接文件緩存。Json/HTML 文件較小忽略不計!
(5) 不要指望這貨能夠跨進程通信 Context.PROCESS

靜態(tài)變量存儲方式

因為這種方式我與我一個同事有了一些意見不一的地方,他喜歡使用靜態(tài)變量?,F(xiàn)在的開發(fā)是針對于設備開發(fā),而并非手機app的開發(fā),如果app開發(fā)他的那種搞法非得出現(xiàn)問題不可。
因為Activity初始化的靜態(tài)變量也會被置空,因此它的生命周期是不穩(wěn)定的。也就是說,在Android中靜態(tài)變量可能隨時被系統(tǒng)置空,變?yōu)閚ull,其它地方在使用的時候就會產(chǎn)生空指針現(xiàn)象

在Android開發(fā)中不提倡過多使用static類型的變量(除了 static final)因為靜態(tài)變量生命周期較長,而且不易被系統(tǒng)回收,因此如果不能合理地使用靜態(tài)變量,就會適得其反,造成大量的內(nèi)存浪費,所謂過猶不及。
經(jīng)過我的多方查證 建議在具備下列全部條件的情況下,盡量使用靜態(tài)變量:
(1) 變量所包含的對象體積較大,占用內(nèi)存較多。
(2) 變量所包含的對象生命周期較長。
(3) 變量所包含的對象數(shù)據(jù)穩(wěn)定。
(4) 該類的對象實例有對該變量所包含的對象的共享需求。
如果變量不具備上述特點建議你不要輕易地使用靜態(tài)變量,以免弄巧成拙。
對于全局變量使用Android提供了 Application 其生命周期與應用程序共存亡。所以對于全局變量可以寫在 Application。

到底使用哪一種存儲方式?

(1) 如果是簡單的數(shù)據(jù)結構,首選 SharedPreferences
(2) 如果是數(shù)據(jù)量大處理復雜的話,首選是sql數(shù)據(jù)庫 對于結構化的數(shù)據(jù),一定要使用數(shù)據(jù)庫,雖然會顯得比較麻煩,但是后續(xù)的使用中會獲益無窮
(3) 普通文件就是指文本文件,二進制文件,多媒體文件,還有頻繁的讀取要是用二進制文件。
(4) 使用網(wǎng)絡存儲時要避免傳輸大數(shù)據(jù)量數(shù)據(jù),應注意對網(wǎng)絡傳輸方式的優(yōu)化(減少請求次數(shù)等)。

總結

以上是生活随笔為你收集整理的Android --- SharePreference 存储与数据库存储的效率分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 在线观看91 | 色婷婷国产精品综合在线观看 | 国产一区二区在线视频 | 国产精品久久久久久久裸模 | 国产视频不卡一区 | 日本免费不卡视频 | 青青青在线视频观看 | 日日操操 | 久久人人爽人人爽 | 日韩精品视频在线看 | 女子spa高潮呻吟抽搐 | 手机av在线| 日韩怡红院 | 在线日韩精品视频 | 亚洲综合在线中文字幕 | 欧美性俱乐部 | 91av视频播放 | 亚洲 欧美 中文字幕 | 另类小说五月天 | 日本在线视频二区 | 精品久久久av | 日韩一级视频 | 天天看天天做 | 精品久久一区 | 一区二区三区不卡在线观看 | 欧美午夜理伦三级在线观看 | 香蕉视频免费看 | 婷婷视频| 污视频免费看 | 日韩图片一区 | 日韩h视频| 亚洲涩涩网站 | 神马久久久久久久久久 | 色窝在线 | 骚虎视频在线观看 | 少妇综合网| 伊人一区二区三区四区 | caoporn免费在线视频 | 91精品综合久久 | 日韩经典在线 | 日本成人片在线 | 自拍偷拍麻豆 | 国产精品免费在线播放 | 国产后入又长又硬 | 青青草手机在线观看 | 国产视频播放 | 欧美人与动性xxxxx杂性 | 免费国产一区二区 | 久久久久久久久国产 | 午夜激情免费 | 丝袜 亚洲 另类 国产 制服 | 亚洲一级理论片 | 天天躁夜夜操 | 香蕉av一区二区三区 | 亚洲午夜无码av毛片久久 | 久久久经典 | 欧美人与野 | 午夜在线你懂的 | 在线免费观看www | 围产精品久久久久久久 | 成人影院免费 | 人妻精品久久久久中文字幕 | 五月天婷婷在线播放 | 受虐m奴xxx在线观看 | 欧美日韩中文在线 | 性开放耄耋老妇hd | 性色免费视频 | 日本黄色一区二区三区 | 在线观看国产亚洲 | 国产又粗又猛又爽69xx | 伊是香蕉大人久久 | 亚洲免费色 | 亚洲视频成人 | 黄色小网站入口 | 精品久久久无码中文字幕边打电话 | 国产精品国产精品国产专区不卡 | 欧美老熟妇一区二区三区 | 波多野结衣av在线免费观看 | 翔田千里一区二区 | 欧洲一二三区 | 国产少女免费观看高清 | www.奇米| 久久久蜜桃一区二区人 | www,99 | 亚洲综合色网 | 日韩永久免费视频 | 久久欧美 | 国产一区二区三区视频在线 | 欧美偷拍一区二区 | 精品人妻一区二区三区免费 | 看污网站 | 大尺度床戏视频 | 天天干天天干天天操 | 免费性网站 | 日韩精品伦理 | 麻豆蜜桃91| 亚洲最大在线视频 | 久久只有精品 | 日韩电影网站 |