如何在Android項(xiàng)目中是SharedPreferences實(shí)現(xiàn)存儲(chǔ)?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、邕寧網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為邕寧等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
SharedPreferences詳解
SharedPreferences是Android平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類(lèi),用來(lái)保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再?gòu)腟haredPreferences中將值取出.
SharedPreferences提供了java常規(guī)的Long、Int、String等類(lèi)型數(shù)據(jù)的保存接口.
SharedPreferences類(lèi)似過(guò)去Windows系統(tǒng)上的ini配置文件,但是它分為多種權(quán)限,可以全局共享訪問(wèn)。
提示最終是以xml方式來(lái)保存,整體效率來(lái)看不是特別的高,對(duì)于常規(guī)的輕量級(jí)而言比SQLite要好不少,如果真的存儲(chǔ)量不大可以考慮自己定義文件格式。xml處理時(shí)Dalvik會(huì)通過(guò)自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對(duì)于內(nèi)存資源占用比較好.
SharedPreferences數(shù)據(jù)的四種操作模式
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
Context.MODE_PRIVATE:為默認(rèn)操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問(wèn),在該模式下,寫(xiě)入的內(nèi)容會(huì)覆蓋原文件的內(nèi)容
Context.MODE_APPEND:模式會(huì)檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來(lái)控制其他應(yīng)用是否有權(quán)限讀寫(xiě)該文件.
MODE_WORLD_READABLE:表示當(dāng)前文件可以被其他應(yīng)用讀取.
MODE_WORLD_WRITEABLE:表示當(dāng)前文件可以被其他應(yīng)用寫(xiě)入
SharedPreferences使用步驟
SharedPreferences的使用非常簡(jiǎn)單,使用SharedPreferences保存key-value對(duì)的步驟如下:
(1)使用Activity類(lèi)的getSharedPreferences方法獲得SharedPreferences對(duì)象,其中存儲(chǔ)key-value的文件的名稱(chēng)由getSharedPreferences方法的第一個(gè)參數(shù)指定.
(2)使用SharedPreferences接口的edit獲得SharedPreferences.Editor對(duì)象.
(3)通過(guò)SharedPreferences.Editor接口的putXxx方法保存key-value對(duì)。其中Xxx表示不同的數(shù)據(jù)類(lèi)型。例如:字符串類(lèi)型的value需要用putString方法.
(4)通過(guò)SharedPreferences.Editor接口的commit方法保存key-value對(duì)。commit方法相當(dāng)于數(shù)據(jù)庫(kù)事務(wù)中的提交(commit)操作.
具體代碼的書(shū)寫(xiě)流程為:
A、存放數(shù)據(jù)信息
1、打開(kāi)Preferences,名稱(chēng)為config,如果存在則打開(kāi)它,否則創(chuàng)建新的Preferences
SharedPreferencesconfig= getSharedPreferences(“config”, 0);
2、讓config處于編輯狀態(tài)
SharedPreferences.Editor editor =config.edit();
3、存放數(shù)據(jù)
editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);
4、完成提交
editor.commit();
B、讀取數(shù)據(jù)信息
1、獲取Preferences
SharedPreferencesconfig= getSharedPreferences(“config”, 0);
2、取出數(shù)據(jù)
String name =config.getString(“name”,”默認(rèn)值”);
String url = config.getString(“URL”,”default”);
以上就是Android中SharedPreferences的使用方法
demo的實(shí)現(xiàn)
MainActivity布局文件
<?xml version="1.0" encoding="utf-8"?>
ActivityA的布局文件
<?xml version="1.0" encoding="utf-8"?>
MainActivity里存儲(chǔ)的具體實(shí)現(xiàn)
都是按照上面寫(xiě)的步驟來(lái)實(shí)現(xiàn)的,最后一定要提交
package com.duanlian.sharedpreferencesdemo; import android.content.Intent; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class MainActivity extends AppCompatActivity { private EditText passWors; private EditText userName; private SharedPreferences preferences; private SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { userName = (EditText) findViewById(R.id.username); passWors = (EditText) findViewById(R.id.password); //1,實(shí)例化SharedPreferences對(duì)象,參數(shù)1:保存的名字,參數(shù)2:保存的模式MODE_PRIVATE私有的 preferences = getSharedPreferences("config", MODE_PRIVATE); //2,讓SharedPreferences處于可編輯狀態(tài) editor = preferences.edit(); } /** * 保存按鈕的監(jiān)聽(tīng) * @param view */ public void save(View view) { //拿到用戶輸入的數(shù)據(jù) String name = userName.getText().toString().trim(); String pwd = passWors.getText().toString().trim(); //3,儲(chǔ)存數(shù)據(jù),類(lèi)似于map editor.putString("name", name); editor.putString("pwd", pwd); //4,提交 editor.commit(); } /** * 跳轉(zhuǎn)的點(diǎn)擊監(jiān)聽(tīng) * @param view */ public void change(View view) { Intent intent = new Intent(MainActivity.this, ActivityA.class); startActivity(intent); } }
取出數(shù)據(jù)的實(shí)現(xiàn)
package com.duanlian.sharedpreferencesdemo; import android.content.SharedPreferences; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class ActivityA extends AppCompatActivity { private EditText userName; private EditText passWord; private String name; private String pwd; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_a); //得到數(shù)據(jù) //1,得到SharedPreferences對(duì)象 SharedPreferences preferences = getSharedPreferences("config", 0); //2,取出數(shù)據(jù) name = preferences.getString("name",""); pwd = preferences.getString("pwd", ""); userName = (EditText) findViewById(R.id.username); passWord = (EditText) findViewById(R.id.password); } /** * 得到數(shù)據(jù)按鈕的監(jiān)聽(tīng) * @param view */ public void get(View view) { userName.setText(name); passWord.setText(pwd); } }
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。