热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

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

这篇文章主要介绍了Android学习之使用SharedPreferences保存应用程序数据的相关资料,需要的朋友可以参考下

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

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

内容如下

<&#63;xml version='1.0' encoding='utf-8' standalOne='yes' &#63;> 
 
 
 

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


推荐阅读
  • 解决Spring Boot项目创建失败的问题
    在尝试创建新的Spring Boot项目时遇到了一些问题,具体表现为在项目创建过程中的两个关键步骤出现错误。本文将详细探讨这些问题及其解决方案。 ... [详细]
  • 本文详细解释了涨停板交易(俗称“打板”)的定义、操作步骤及注意事项。涨停板交易是一种高风险高回报的投资策略,尤其在牛市中表现出色。文中不仅介绍了如何选择和买入涨停股票,还提供了三大纪律以规避风险。 ... [详细]
  • Java 中重写与重载的区别
    本文详细解析了 Java 编程语言中重写(Override)和重载(Overload)的概念及其主要区别,帮助开发者更好地理解和应用这两种多态性机制。 ... [详细]
  • Shell脚本中变量操作详解
    本文基于《鸟哥的Linux私房菜》一书,详细介绍了Shell脚本中变量的使用方法,包括变量的赋值规则、字符串处理技巧以及环境变量的管理等,旨在帮助读者更好地理解和使用Shell中的变量。 ... [详细]
  • 云屏系统基于嵌入式微系统msOS,旨在解决当前嵌入式彩屏GUI编程中硬件要求高、软件开发复杂、界面效果不佳等问题。该系统通过结合MCU和Android技术,利用Html5+JavaScript实现高效、易用的图形用户界面开发,使嵌入式开发人员能够专注于业务逻辑。 ... [详细]
  • 本文详细记录了一位具有五年半开发经验的候选人,在华为Android高级开发职位面试过程中的经历。从早晨9点到下午5点半,经过了群体面试、技术面试、综合面试及英语面试等多个环节,最终成功通过考核。文章不仅分享了面试心得,还提供了宝贵的面试题资源。 ... [详细]
  • 使用WinForms 实现 RabbitMQ RPC 示例
    本文通过两个WinForms应用程序演示了如何使用RabbitMQ实现远程过程调用(RPC)。一个应用作为客户端发送请求,另一个应用作为服务端处理请求并返回响应。 ... [详细]
  • iOS 开发技巧:TabBarController 自定义与本地通知设置
    本文介绍了如何在 iOS 中自定义 TabBarController 的背景颜色和选中项的颜色,以及如何使用本地通知设置应用程序图标上的提醒个数。通过这些技巧,可以提升应用的用户体验。 ... [详细]
  • 本文旨在回顾并总结近期学习的.NET Core基础知识,通过具体的操作指南加深理解,并为初学者提供实用建议,避免常见的错误和陷阱。内容涵盖CentOS的安装配置、.NET Core环境搭建及网站部署等。 ... [详细]
  • 烤鸭|本文_Spring之Bean的生命周期详解
    烤鸭|本文_Spring之Bean的生命周期详解 ... [详细]
  • 本文介绍了如何使用JFreeChart库创建一个美观且功能丰富的环形图。通过设置主题、字体和颜色等属性,可以生成符合特定需求的图表。 ... [详细]
  • 本文将带您了解Cocos家族的不同版本和分支,特别是Cocos Creator的发展历程及其核心特性,帮助初学者快速入门。 ... [详细]
  • 解决Hive操作无响应问题:drop table和create table的处理方法
    本文详细介绍了在Hive中执行drop table和create table命令时遇到无响应的情况,并提供了完整的解决方案。通过调整MySQL字符集编码,确保Hive数据库与MySQL之间的兼容性,从而有效解决问题。 ... [详细]
  • 本文针对初学者在创建Android项目时遇到的R.java文件错误提供了解决方案,通过实际案例和详细的日志分析,帮助读者快速定位并解决问题。 ... [详细]
  • 本文介绍了如何使用Java代码在Android设备上检测特定应用程序是否已安装。通过创建一个Intent并利用PackageManager查询该Intent的可用性来实现这一功能。 ... [详细]
author-avatar
三十二号t娶我吧
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有