Android學(xué)習(xí)之使用SharedPreferences存儲(chǔ)應(yīng)用程序數(shù)據(jù)
本文介紹了SharedPreferences保存應(yīng)用程序數(shù)據(jù)的具體步驟,供大家參考,具體內(nèi)容如下
1、SharedPreferences的簡(jiǎn)單介紹
應(yīng)用程序在運(yùn)行的時(shí)候,可能會(huì)隨著用戶的使用而保持該用戶的配置信息,如上次播放時(shí)的eq設(shè)置,音量設(shè)置,上網(wǎng)的cookies信息等等,這些小量 的信息可以通過(guò)SharedPreferences來(lái)保持,通過(guò)SharedPreferences保持的數(shù)據(jù)為一個(gè)XML文件,位于應(yīng)用程序的私有文件夾。
2、具體操作方法
獲取SharedPreferences,可以通過(guò)以下方法獲取:

參數(shù)簡(jiǎn)述:
Name————獲得SharedPreferences之后,將會(huì)在應(yīng)用程序的私有文件夾中保存著一個(gè)XML文件,第一個(gè)參數(shù)name就是這個(gè)文件名字。
Mode————XML文件的保存模式,默認(rèn)為0,也就是MODE_PRIVATE
3、簡(jiǎn)單的demo
通過(guò)service的一個(gè)音樂(lè)播放例子,“播放”與“暫?!眱蓚€(gè)按鈕
暫停之后,保持播放進(jìn)度到SharedPreferences里面,然后再次播放的話,讀取進(jìn)度值進(jìn)行音樂(lè)播放。
/*
* @author:conowen
* @date:12.3.01
*
*/
package com.conowen.sharedpreferences;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class SharedPreferencesActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button play = (Button) findViewById(R.id.play);
Button pause = (Button) findViewById(R.id.pause);
final Intent intent = new Intent(SharedPreferencesActivity.this,service.class);
// 定義intent為final,全局變量,供下面兩個(gè)匿名內(nèi)部類(onclicklisenter)使用
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
startService(intent);
// 開(kāi)始播放,通過(guò)前面定義好的intent傳遞
}
});
pause.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
stopService(intent);
// 停止播放
}
});
}
}
第二個(gè)class是繼承service的,記得在manifest.XML里面注冊(cè)service
/*
* @author:conowen
* @date:12.3.01
*
*/
package com.conowen.sharedpreferences;
import android.app.Service;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.MediaPlayer;
import android.os.IBinder;
public class service extends Service {
MediaPlayer player;
// 新建播放器
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
player = MediaPlayer.create(this, R.raw.lt26);
player.setLooping(true);
// 兩種方式的第一個(gè)生命周期都是onCreate()
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
super.onStart(intent, startId);
SharedPreferences sp = this.getSharedPreferences("music_progress",
MODE_PRIVATE);
// music_progress為XML文件的文件名
player.seekTo(sp.getInt("progress", 0));
// progress為鍵值對(duì)中的key,progress所對(duì)應(yīng)的值通過(guò)player.getCurrentPosition()獲得,請(qǐng)看下面詳細(xì)
// 每次調(diào)用onStart方法時(shí),就會(huì)設(shè)置player的進(jìn)度
// MediaPlayer的seekTo方法,讀取進(jìn)度,然后播放,getInt的第一個(gè)參數(shù)是所要讀取的key名字,第二個(gè)參數(shù)為默認(rèn)初始值。也就是說(shuō)進(jìn)度初始默認(rèn)為0
player.start();
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
SharedPreferences sp = this.getSharedPreferences("music_progress",
MODE_PRIVATE);
sp.edit().putInt("progress", player.getCurrentPosition()).commit();
// player.getCurrentPosition()方法獲取播放進(jìn)度的數(shù)據(jù)
// commit()方法是保存SharedPreferences獲取來(lái)的數(shù)據(jù)
player.stop();
}
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
return null;
}
}
通過(guò)SharedPreferences保存的文檔如下所示,打開(kāi)DDMS,切換到File Explore,在私有目錄下的shared_prefs文件夾里面,路徑為/data/data/你的包名/shared_prefs

內(nèi)容如下
<?xml version='1.0' encoding='utf-8' standalone='yes' ?> <map> <int name="progress" value="90695" /> </map>
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)Android軟件編程有所幫助。
- Android通過(guò)SharedPreferences實(shí)現(xiàn)自動(dòng)登錄記住用戶名和密碼功能
- Android SharedPreferences存儲(chǔ)的正確寫(xiě)法
- Android本地存儲(chǔ)SharedPreferences詳解
- Android 跨進(jìn)程SharedPreferences異常詳解
- Android SharedPreferences存儲(chǔ)用法詳解
- Android SharedPreferences實(shí)現(xiàn)記住密碼和自動(dòng)登錄界面
- Android應(yīng)用中使用SharedPreferences類存儲(chǔ)數(shù)據(jù)的方法
- 簡(jiǎn)介Android應(yīng)用中sharedPreferences類存儲(chǔ)數(shù)據(jù)的用法
- Android SharedPreferences四種操作模式使用詳解
相關(guān)文章
使用Kotlin開(kāi)發(fā)Android應(yīng)用教程
這篇文章主要為大家詳細(xì)介紹了使用Kotlin開(kāi)發(fā)Android應(yīng)用的教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05
Android自定義滑動(dòng)刪除效果的實(shí)現(xiàn)代碼
這篇文章將從現(xiàn)有 Android 滑動(dòng)刪除的痛點(diǎn),到搭建好一個(gè)基本的框架,到最終提供一份完整的 Demo為止,爭(zhēng)取為讀者提供最大的可定制化,需要的朋友可以參考下2018-03-03
Android打包上傳AAR文件到Maven倉(cāng)庫(kù)的示例
這篇文章主要介紹了Android打包上傳AAR文件到Maven倉(cāng)庫(kù)的示例,幫助大家更好的理解和學(xué)習(xí)使用Android開(kāi)發(fā),感興趣的朋友可以了解下2021-03-03
Android實(shí)現(xiàn)自定義的衛(wèi)星式菜單(弧形菜單)詳解
相信大家經(jīng)常在應(yīng)用中會(huì)看到衛(wèi)星菜單,那么這篇文章就來(lái)介紹在Android中如何實(shí)現(xiàn)自定義的衛(wèi)星式菜單(弧形菜單),有需要的可以參考學(xué)習(xí)。2016-08-08
Android開(kāi)發(fā)Jetpack組件ViewModel與LiveData使用講解
Jetpack是一個(gè)由多個(gè)技術(shù)庫(kù)組成的套件,可幫助開(kāi)發(fā)者遵循最佳做法,減少樣板代碼并編寫(xiě)可在各種Android版本和設(shè)備中一致運(yùn)行的代碼,讓開(kāi)發(fā)者精力集中編寫(xiě)重要的代碼2022-09-09
Android的Service應(yīng)用程序組件基本編寫(xiě)方法
Service是一個(gè)android 系統(tǒng)中的應(yīng)用程序組件,它跟Activity的級(jí)別差不多,但是他沒(méi)有圖形化界面,不能自己運(yùn)行,只能后臺(tái)運(yùn)行,Service通常用來(lái)處理一些耗時(shí)比較長(zhǎng)的操作2012-12-12
Android開(kāi)發(fā)之Android.mk模板的實(shí)例詳解
這篇文章主要介紹了Android開(kāi)發(fā)之Android.mk模板的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家理解掌握這部分內(nèi)容,需要的朋友可以參考下2017-10-10
Android編程單元測(cè)試實(shí)例詳解(附源碼)
這篇文章主要介紹了Android編程單元測(cè)試,結(jié)合完整實(shí)例形式詳細(xì)分析了Android單元測(cè)試的具體步驟與相關(guān)技巧,并附帶完整實(shí)例代碼供讀者下載參考,需要的朋友可以參考下2015-11-11

