安卓開(kāi)發(fā)必看!SharedPreferences有哪些功能?和Intent有什么區(qū)別?附代碼(JAVA)
1簡(jiǎn)單介紹SharedPreferences
2舉一個(gè)具體的例子
3SharedPreferences運(yùn)用
4SharedPreferences和Intent有什么區(qū)別和關(guān)系
正文:
SharedPreferences
是Android提供的一種輕量級(jí)的數(shù)據(jù)存儲(chǔ)機(jī)制。它允許你將小型數(shù)據(jù)集(比如一些基礎(chǔ)的用戶(hù)設(shè)置或者應(yīng)用程序狀態(tài)信息)保存在設(shè)備的永久內(nèi)存中。
首先先舉一個(gè)例子,下面是一個(gè)名為"SettingsActivity"的類(lèi),這個(gè)類(lèi)表示一個(gè)設(shè)置界面,在這個(gè)界面中,我們可以改變一個(gè)叫做"notifications_enabled"的設(shè)置項(xiàng)。
這個(gè)類(lèi)保存這個(gè)設(shè)置項(xiàng)的值到SharedPreferences中,然后在下次打開(kāi)設(shè)置界面時(shí),會(huì)讀取這個(gè)值并顯示到界面上。
這個(gè)類(lèi)的工作流程是這樣的:
當(dāng)
SettingsActivity
被創(chuàng)建時(shí),onCreate
方法會(huì)被調(diào)用。在這個(gè)方法中,我們首先獲取到CheckBox的引用(CheckBox是一個(gè)可以被選中或取消選中的控件),然后獲取到SharedPreferences。從SharedPreferences中讀取"notifications_enabled"的值(如果沒(méi)有這個(gè)值,就默認(rèn)為true),并將這個(gè)值設(shè)置到CheckBox上。
設(shè)置一個(gè)監(jiān)聽(tīng)器到CheckBox上,當(dāng)CheckBox的狀態(tài)發(fā)生改變時(shí)(即用戶(hù)點(diǎn)擊了CheckBox),這個(gè)監(jiān)聽(tīng)器就會(huì)被觸發(fā)。
在監(jiān)聽(tīng)器中,我們將新的CheckBox狀態(tài)保存到SharedPreferences中。這樣,當(dāng)用戶(hù)下次打開(kāi)設(shè)置界面時(shí),CheckBox的狀態(tài)就會(huì)是用戶(hù)上次設(shè)置的狀態(tài)。
以下是一些SharedPreferences
的常見(jiàn)用途:
用戶(hù)偏好:你可以使用
SharedPreferences
來(lái)存儲(chǔ)應(yīng)用設(shè)置,例如:用戶(hù)是否希望接收通知,用戶(hù)的主題顏色偏好,或者是應(yīng)用的語(yǔ)言設(shè)置等。應(yīng)用狀態(tài):
SharedPreferences
也可以用來(lái)保存應(yīng)用的狀態(tài)信息,比如上次用戶(hù)在哪個(gè)界面退出的,或者用戶(hù)在游戲中的等級(jí)等。頻繁讀取的數(shù)據(jù):對(duì)于頻繁讀取的數(shù)據(jù),比如用戶(hù)的用戶(hù)名、積分等,使用
SharedPreferences
可以避免每次都去查詢(xún)數(shù)據(jù)庫(kù)。
舉個(gè)具體的例子,比如一個(gè)新聞應(yīng)用,你可以使用SharedPreferences
來(lái)存儲(chǔ)以下的信息:
用戶(hù)是否希望在Wi-Fi環(huán)境下自動(dòng)下載新聞:這是一個(gè)用戶(hù)設(shè)置,你可以在設(shè)置頁(yè)面提供一個(gè)開(kāi)關(guān)讓用戶(hù)進(jìn)行選擇,然后將用戶(hù)的選擇保存在
SharedPreferences
中。用戶(hù)上次閱讀到哪一條新聞:這是一個(gè)應(yīng)用狀態(tài),當(dāng)用戶(hù)下次打開(kāi)應(yīng)用時(shí),你可以讀取這個(gè)狀態(tài)并將用戶(hù)帶到他上次閱讀的位置。
用戶(hù)的用戶(hù)名:如果應(yīng)用支持用戶(hù)登錄,那么可以將用戶(hù)名保存在
SharedPreferences
中,這樣下次用戶(hù)打開(kāi)應(yīng)用時(shí),就可以自動(dòng)填充用戶(hù)名。
在實(shí)際使用中,SharedPreferences
是以鍵值對(duì)的方式存儲(chǔ)數(shù)據(jù),其中鍵是一個(gè)字符串,用來(lái)標(biāo)識(shí)數(shù)據(jù);值是實(shí)際的數(shù)據(jù),可以是布爾值、整數(shù)、浮點(diǎn)數(shù)、長(zhǎng)整數(shù)、字符串等。
SharedPreferences和Intent有什么區(qū)別和關(guān)系:
SharedPreferences
主要用于在設(shè)備的本地存儲(chǔ)中存儲(chǔ)和讀取小型數(shù)據(jù)集。你可以使用它來(lái)保存應(yīng)用設(shè)置,記錄應(yīng)用的狀態(tài),或者保存用戶(hù)的一些偏好。例如,在上一個(gè)例子中,我們使用SharedPreferences
保存了一個(gè)名為"notifications_enabled"的設(shè)置項(xiàng)。Intent
是Android中進(jìn)行頁(yè)面跳轉(zhuǎn)的一種機(jī)制。你可以通過(guò)創(chuàng)建一個(gè)Intent
,然后使用startActivity(intent)
來(lái)打開(kāi)一個(gè)新的頁(yè)面(Activity
)。Intent
也可以用來(lái)在Activity
之間傳遞數(shù)據(jù)。比如,你可以在創(chuàng)建Intent
時(shí)將一些數(shù)據(jù)放入其中,然后在新的Activity
中讀取這些數(shù)據(jù)。
它們之間的主要區(qū)別在于:
SharedPreferences
用于在設(shè)備本地存儲(chǔ)和讀取數(shù)據(jù),適用于需要長(zhǎng)期保存的數(shù)據(jù);Intent
用于頁(yè)面跳轉(zhuǎn)以及在Activity
之間傳遞數(shù)據(jù),適用于臨時(shí)的數(shù)據(jù)傳遞。
在實(shí)際的應(yīng)用開(kāi)發(fā)中,SharedPreferences
和Intent
經(jīng)常一起使用。例如,你可以在一個(gè)Activity
中通過(guò)SharedPreferences
讀取用戶(hù)的設(shè)置,然后通過(guò)Intent
將設(shè)置傳遞給另一個(gè)Activity
。
以下是一個(gè)使用SharedPreferences和Intent一起使用的例子。在這個(gè)例子中,我們有兩個(gè)Activity:MainActivity和SecondActivity。
在MainActivity中,我們從SharedPreferences中獲取一個(gè)字符串值("user_name"),然后通過(guò)Intent將這個(gè)值傳遞給SecondActivity。
在SecondActivity中,我們從Intent中獲取這個(gè)字符串值,并顯示在屏幕上。
首先是MainActivity:
然后是SecondActivity:
這個(gè)例子中,當(dāng)用戶(hù)點(diǎn)擊MainActivity中的按鈕時(shí),我們從SharedPreferences中讀取"user_name"值,并將其通過(guò)Intent傳遞給SecondActivity。在SecondActivity中,我們接收到這個(gè)值,并在屏幕上顯示歡迎信息。
注意,這個(gè)例子假設(shè)你已經(jīng)在某個(gè)地方將"user_name"的值保存到了SharedPreferences中。如果這個(gè)值不存在,那么SharedPreferences.getString方法會(huì)返回默認(rèn)值"Default User"。