保存数据到Android设备中

最近开始看视频学习Android,学习视频为黑马的Android视频教程。

学习到保存数据到设备中的方法,认为比较重要,所以记下来。

保存数据到手机目前看到视频里面讲了两种方法(除去直接写输出流的方法),一种是使用XmlSerializer ,另外一种是使用SharedPreference。

个人感觉如果保存少量配置信息的话,使用SharedPreference比较方便,如果数据量比较大的话,那么使用XmlSerializer 更好一点。

下面是代码。

XML:

<RelativeLayout 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:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" 
    >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="24dp"
        android:onClick="saveXS"
        android:text="XmlSerializer" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="49dp"
        android:onClick="saveSP"
        android:text="SharedPreference" />

</RelativeLayout>

Java:

import java.io.File;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

import org.xmlpull.v1.XmlSerializer;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.util.Xml;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

import com.yrsoft.domain.SmsInfo;

public class MainActivity extends Activity {
	List<SmsInfo> smss;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//这里是假设已经获取到短信内容,并且将其放入一个集合中。
		smss = new ArrayList<SmsInfo>();
		Random r = new Random();
		long number = 13500000000l;
		for (int i = 0; i < 10; i++) {
			smss.add(new SmsInfo("短信内容"+i, i, System.currentTimeMillis(), r.nextInt(2)+1, Long.toString(number+i)));
		}
	}

	/**
	 * 使用XmlSerializer 保存xml数据
	 * @param view
	 */
	public void saveXS(View view){
		Toast.makeText(this, "开始备份...", Toast.LENGTH_LONG).show();
		//获取XML的序列化器
		XmlSerializer serializer = Xml.newSerializer();
		File file = new File("/data/data/com.yrsoft.seri/","backup.xml");
		FileOutputStream fos;
		try {
			fos = new FileOutputStream(file);
			//指定XML的输出流
			serializer.setOutput(fos, "UTF-8");
			//文档开始  参数:编码,是否独立文件
			serializer.startDocument("UTF-8", true);
			//开始节点,参数:命名空间,标签名
			serializer.startTag(null, "smss");
			for (SmsInfo info : smss) {
				serializer.startTag(null, "sms");
				//为sms节点添加id属性。参数:命名空间,参数名,参数值
				serializer.attribute(null, "id", info.getId()+"");
				
				serializer.startTag(null, "content");
				serializer.text(info.getContent());
				serializer.endTag(null, "content");
				
				serializer.startTag(null, "date");
				serializer.text(info.getDate()+"");
				serializer.endTag(null, "date");
				
				serializer.startTag(null, "type");
				serializer.text(info.getType()+"");
				serializer.endTag(null, "type");
				
				serializer.startTag(null, "address");
				serializer.text(info.getAddress());
				serializer.endTag(null, "address");
				
				serializer.endTag(null, "sms");
			}
			//结束节点
			serializer.endTag(null, "smss");
			//文档结束
			serializer.endDocument();
			
			fos.close();
			Toast.makeText(this, "备份成功", Toast.LENGTH_LONG).show();
		} catch (Exception e) {
			e.printStackTrace();
			Toast.makeText(this, "备份失败", Toast.LENGTH_LONG).show();
		}
	}
	
	/**
	 * 使用SharedPerference保存XML数据
	 * @param view
	 */
	public void saveSP(View view){
		saveUserInfo(this, "zhangsan", "123");
		Toast.makeText(this, "保存信息成功", Toast.LENGTH_LONG).show();
		
	}
	private void saveUserInfo(Context ctx ,String userName,String password){
		//获取SharedPreference。参数:保存的文件名,模式。
		SharedPreferences sp = ctx.getSharedPreferences("config", Context.MODE_PRIVATE);
		//获取sp的编辑器
		Editor editor = sp.edit();
		//使用编辑器存数据。
		editor.putString("username",userName);
		editor.putString("password", password);
		//提交事务。一定要记得提交,否则数据不会写到设备中
		editor.commit();
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值