您好,登錄后才能下訂單哦!
如何在Android項目中是SharedPreferences實現存儲?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
SharedPreferences詳解
SharedPreferences是Android平臺上一個輕量級的存儲類,用來保存應用的一些常用配置,比如Activity狀態,Activity暫停時,將此activity的狀態保存到SharedPereferences中;當Activity重載,系統回調方法onSaveInstanceState時,再從SharedPreferences中將值取出.
SharedPreferences提供了java常規的Long、Int、String等類型數據的保存接口.
SharedPreferences類似過去Windows系統上的ini配置文件,但是它分為多種權限,可以全局共享訪問。
提示最終是以xml方式來保存,整體效率來看不是特別的高,對于常規的輕量級而言比SQLite要好不少,如果真的存儲量不大可以考慮自己定義文件格式。xml處理時Dalvik會通過自帶底層的本地XML Parser解析,比如XMLpull方式,這樣對于內存資源占用比較好.
SharedPreferences數據的四種操作模式
Context.MODE_PRIVATE
Context.MODE_APPEND
Context.MODE_WORLD_READABLE
Context.MODE_WORLD_WRITEABLE
Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容
Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件.
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件.
MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取.
MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入
SharedPreferences使用步驟
SharedPreferences的使用非常簡單,使用SharedPreferences保存key-value對的步驟如下:
(1)使用Activity類的getSharedPreferences方法獲得SharedPreferences對象,其中存儲key-value的文件的名稱由getSharedPreferences方法的第一個參數指定.
(2)使用SharedPreferences接口的edit獲得SharedPreferences.Editor對象.
(3)通過SharedPreferences.Editor接口的putXxx方法保存key-value對。其中Xxx表示不同的數據類型。例如:字符串類型的value需要用putString方法.
(4)通過SharedPreferences.Editor接口的commit方法保存key-value對。commit方法相當于數據庫事務中的提交(commit)操作.
具體代碼的書寫流程為:
A、存放數據信息
1、打開Preferences,名稱為config,如果存在則打開它,否則創建新的Preferences
SharedPreferencesconfig= getSharedPreferences(“config”, 0);
2、讓config處于編輯狀態
SharedPreferences.Editor editor =config.edit();
3、存放數據
editor.putString(“name”,”ATAAW”);
editor.putString(“URL”,”ATAAW.COM”);
4、完成提交
editor.commit();
B、讀取數據信息
1、獲取Preferences
SharedPreferencesconfig= getSharedPreferences(“config”, 0);
2、取出數據
String name =config.getString(“name”,”默認值”);
String url = config.getString(“URL”,”default”);
以上就是Android中SharedPreferences的使用方法
demo的實現
MainActivity布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.duanlian.sharedpreferencesdemo.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="用戶名" android:textSize="23sp" /> <EditText android:id="@+id/username" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="密 碼" android:textSize="23sp" /> <EditText android:id="@+id/password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <Button android:onClick="save" android:layout_width="match_parent" android:layout_height="50dp" android:text="保存信息"/> <Button android:onClick="change" android:layout_width="match_parent" android:layout_height="50dp" android:text="跳轉"/> </LinearLayout>
ActivityA的布局文件
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context="com.duanlian.sharedpreferencesdemo.MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="用戶名" android:textSize="23sp" /> <EditText android:id="@+id/username" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="50dp"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="密 碼" android:textSize="23sp" /> <EditText android:id="@+id/password" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" /> </LinearLayout> <Button android:onClick="get" android:layout_width="match_parent" android:layout_height="50dp" android:text="得到信息"/> </LinearLayout>
MainActivity里存儲的具體實現
都是按照上面寫的步驟來實現的,最后一定要提交
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,實例化SharedPreferences對象,參數1:保存的名字,參數2:保存的模式MODE_PRIVATE私有的 preferences = getSharedPreferences("config", MODE_PRIVATE); //2,讓SharedPreferences處于可編輯狀態 editor = preferences.edit(); } /** * 保存按鈕的監聽 * @param view */ public void save(View view) { //拿到用戶輸入的數據 String name = userName.getText().toString().trim(); String pwd = passWors.getText().toString().trim(); //3,儲存數據,類似于map editor.putString("name", name); editor.putString("pwd", pwd); //4,提交 editor.commit(); } /** * 跳轉的點擊監聽 * @param view */ public void change(View view) { Intent intent = new Intent(MainActivity.this, ActivityA.class); startActivity(intent); } }
取出數據的實現
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); //得到數據 //1,得到SharedPreferences對象 SharedPreferences preferences = getSharedPreferences("config", 0); //2,取出數據 name = preferences.getString("name",""); pwd = preferences.getString("pwd", ""); userName = (EditText) findViewById(R.id.username); passWord = (EditText) findViewById(R.id.password); } /** * 得到數據按鈕的監聽 * @param view */ public void get(View view) { userName.setText(name); passWord.setText(pwd); } }
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。