学徒浅析Android开发:第七讲——数据存储之SharedPreferences

本文详细介绍了Android开发中常用的SharedPreferences数据存储模式,包括其用途、获取方式及操作模式,并通过示例代码展示了如何使用SharedPreferences进行简单数据存储。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                   Android提供给我们四种数据存储模式:Files,SharedPreferences,SQLite,Network。今天小编给大家重点介绍一下SharedPreferences.

                  SharedPreferences类似于我们常见的ini文件,用以保存应用程序的一些属性设置。在Android平台常用于存储比较简单的参数设置。比如boolean,int,float,long,String等数据.使用SharedPreferences保存数据,其实质是采用了xml文件存放数据,路径为:/data/data/<package name>/shared_prefs.
       获取SharedPreferences的两种方式:
    1 调用Context对象的getSharedPreferences()方法,调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
     2 调用Activity对象的getPreferences()方法,调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用
     SharedPreferences的四种操作模式:
     1.Context.MODE_PRIVATE
     2.Context.MODE_APPEND
     3.Context.MODE_WORLD_READABLE
     4.Context.MODE_WORLD_WRITEABLE

    Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容

    Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
    Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
    Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.

具体代码如下:

package com.example.demo_sharedpreferences;
/**
 * @author Arthur Lee
 * @time 05/29/2014
 * */
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	private Button  share_bt1,share_bt2;
	Message msg = new Message();
	Bundle data = new Bundle();
	Handler handler = new Handler(){

		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			super.handleMessage(msg);
			switch(msg.what){
			case 0:
				Toast.makeText(MainActivity.this, "保存成功",Toast.LENGTH_LONG).show();
				break;
			case 1:
				Toast.makeText(MainActivity.this, "姓名:"+msg.getData().getString("name"),Toast.LENGTH_LONG).show();
				break;
			default:
				break;
			}
		}};
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		share_bt1 = (Button)findViewById(R.id.share_bt1);
		share_bt2 = (Button)findViewById(R.id.share_bt2);
		
		share_bt1.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				/**
				 * 打开一个名字为“user”的preferences,如果该文件不存在,则创建它*/
				SharedPreferences share = getSharedPreferences("user",Context.MODE_PRIVATE);
				/**
				 * 设置编辑器,负责向当前的“user”中编辑并写入数据*/
				SharedPreferences.Editor editor = share.edit();
				/**
				 * 所有的数据以键值对的形式保存到SharedPreferences中,
				 * 可以保存的类型有布尔型,整型,字符串。*/
				editor.putBoolean("flag", true);
				editor.putBoolean("media", true);
				editor.putString("name", "Arthur Lee");
				editor.putInt("count", 1);
				/**
				 * 将数据保存到“user”中*/
				editor.commit();
				/**
				 * 清除SharedPreferences中的数据*/
				//editor.clear();
				handler.sendEmptyMessage(0);
			}
		});
		share_bt2.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				SharedPreferences share = getSharedPreferences("user",Context.MODE_PRIVATE);
				/**
				 * 获取保存在Preferences中的特定数据*/
				String message = share.getString("name", "");
				data.putString("name", message);
				msg.what = 1;				
				msg.setData(data);
				handler.sendMessage(msg);
			}
		});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}


效果图如下所示:


最后还是以一句话结尾:我不是一名好的程序员,我只会默默奉献。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值