欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android学习之使用SharedPreferences存储应用程序数据

程序员文章站 2024-03-01 14:04:46
本文介绍了sharedpreferences保存应用程序数据的具体步骤,供大家参考,具体内容如下 1、sharedpreferences的简单介绍 应用程序在运行的时候...

本文介绍了sharedpreferences保存应用程序数据的具体步骤,供大家参考,具体内容如下

1、sharedpreferences的简单介绍
应用程序在运行的时候,可能会随着用户的使用而保持该用户的配置信息,如上次播放时的eq设置,音量设置,上网的cookies信息等等,这些小量 的信息可以通过sharedpreferences来保持,通过sharedpreferences保持的数据为一个xml文件,位于应用程序的私有文件夹。
2、具体操作方法
获取sharedpreferences,可以通过以下方法获取:

Android学习之使用SharedPreferences存储应用程序数据

参数简述:
name————获得sharedpreferences之后,将会在应用程序的私有文件夹中保存着一个xml文件,第一个参数name就是这个文件名字。
mode————xml文件的保存模式,默认为0,也就是mode_private

3、简单的demo
通过service的一个音乐播放例子,“播放”与“暂停”两个按钮
暂停之后,保持播放进度到sharedpreferences里面,然后再次播放的话,读取进度值进行音乐播放。

/* 
 * @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,全局变量,供下面两个匿名内部类(onclicklisenter)使用  
    play.setonclicklistener(new onclicklistener() {  
  
      @override  
      public void onclick(view v) {  
        // todo auto-generated method stub  
        startservice(intent);  
        // 开始播放,通过前面定义好的intent传递  
  
      }  
    });  
    pause.setonclicklistener(new onclicklistener() {  
  
      @override  
      public void onclick(view v) {  
        // todo auto-generated method stub  
        stopservice(intent);  
        // 停止播放  
  
      }  
    });  
     
  } 
} 

第二个class是继承service的,记得在manifest.xml里面注册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); 
    // 两种方式的第一个生命周期都是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为键值对中的key,progress所对应的值通过player.getcurrentposition()获得,请看下面详细 
    // 每次调用onstart方法时,就会设置player的进度 
    // mediaplayer的seekto方法,读取进度,然后播放,getint的第一个参数是所要读取的key名字,第二个参数为默认初始值。也就是说进度初始默认为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()方法获取播放进度的数据 
    // commit()方法是保存sharedpreferences获取来的数据 
    player.stop(); 
  } 
 
  @override 
  public ibinder onbind(intent intent) { 
    // todo auto-generated method stub 
    return null; 
  } 
 
} 

通过sharedpreferences保存的文档如下所示,打开ddms,切换到file explore,在私有目录下的shared_prefs文件夹里面,路径为
/data/data/你的包名/shared_prefs

Android学习之使用SharedPreferences存储应用程序数据

内容如下

<?xml version='1.0' encoding='utf-8' standalone='yes' ?> 
<map> 
<int name="progress" value="90695" /> 
</map> 

以上就是本文的全部内容,希望对大家学习android软件编程有所帮助。