android数据持久化技术大致有三类,下面逐个阐述。
一、文件存储
利用context类中的openFileInput()方法和openFileOutput()实现数据的存储。
案例:实现textview控件输入数据的保存以及再次打开app时实现数据自动加载。
主要的方法为:
load()
用java流实现自动加载。
onDestroy()
当程序被销毁时调用这个方法,该方法体内调用方法save()实现数据的保存,保存到”data”文件夹
save()
用java流实现文件保存
代码实例:
package com.example.liangzi.fpc;
import android.app.Activity;
import android.content.Context;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import android.text.TextUtils;
import android.widget.EditText;
import android.os.Bundle;
import android.widget.Toast;
/**
* Created by liangzi on 2017/5/13.
*/
public class Mainactivity extends Activity {
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.layout);
edit = (EditText) findViewById(R.id.edit);
String inputtext = load();
if(!TextUtils.isEmpty(inputtext)){
edit.setText(inputtext);
edit.setSelection(inputtext.length());
Toast.makeText(this,"restoring succeeded",Toast.LENGTH_SHORT).show();
}
}//end of method
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try {
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
while ((line = reader.readLine()) != null) {
content.append(line);
}
}catch(IOException e){
e.printStackTrace();
}finally {
if(reader != null){
try{
reader.close();
}catch(IOException e){
e.printStackTrace();
}
}
}
return content.toString();
}
public void onDestroy(){
super.onDestroy();
String inputtext = edit.getText().toString();
save(inputtext);
}//end of ondestroy
public void save(String inputtext){
FileOutputStream out = null;
BufferedWriter bw = null;
try{
out = openFileOutput("data", Context.MODE_PRIVATE);
bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write(inputtext);
}catch(IOException e){
e.printStackTrace();
} finally{
try{
if(bw != null)
bw.close();
}catch(IOException e){
e.printStackTrace();
}
}
}//end save method
}
二SharedPreferences存储
三SQLite