Android存储方式有以下几种:
- 文件存储
- SharedPreferences存储
- 数据库存储
- 手机外存储(SD卡)
- 云存储
一、文件存储
类似于JAVA存储数据到文件一样
二、SharedPreferences存储
其实就是一个xml文件,方便存取,能够很快的读取标签内容。
以下是总结第一二中使用方式的Demo源码:
package com.study.test.testapplication.acty;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.study.test.testapplication.R;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
/**
* Create by BruceXuheng on 2018/5/29
* description :
* 1、文件保存方法 save() 读取方法readLoad()
* 2、SharedPreferences存储
* 数据存储、获取SP
**/
public class FileSaveActivity extends AppCompatActivity {
private EditText mEditText;
private Button mButton,mReadBtn;
private Button mSpSave,mSpRead;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_file_save);
init();
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String str = mEditText.getText().toString();
save(str);
}
});
mReadBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String str = readLoad();
Toast.makeText(FileSaveActivity.this, str, Toast.LENGTH_SHORT).show();
}
});
mSpSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","火锅配麻酱");
editor.apply();
}
});
mSpRead.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences pref = getSharedPreferences("data",MODE_PRIVATE);
String name = pref.getString("name","爱你很走心");
Toast.makeText(FileSaveActivity.this, name, Toast.LENGTH_SHORT).show();
}
});
}
private void init() {
mEditText = (EditText) findViewById(R.id.edt_file_save);
mButton = (Button) findViewById(R.id.save_content_file_btn);
mReadBtn = (Button) findViewById(R.id.read_content_file_btn);
mSpSave = (Button) findViewById(R.id.save_sp);
mSpRead = (Button) findViewById(R.id.read_sp);
}
private void save(String string) {
FileOutputStream out = null;
BufferedWriter writer = null;
try {
out = openFileOutput("data", Context.MODE_PRIVATE);
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(string);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private String readLoad(){
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 (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(reader != null){
try {
reader.close();
} catch (IOException e) {
}
}
}
return content.toString();
}
}
三、SQLIte数据库存储
在Android使用Sqlite的时候,一定要掌握sqlite的基本功,这样才能灵活开发,确保数据存储ACID。
数据库创建和建表
package com.study.test.testapplication.database;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.widget.Toast;
/**
* Create by BruceXuheng on 2018/6/5
* description :
* 数据库创建类
*
**/
public class MyDatabaseHelper extends SQLiteOpenHelper {
private Context mContext;
private static int dbVersion = 1;
private String createBookSql = "create table Book ("
+"id integer primary key autoincrement,"
+"author text,"
+"price text,"
+"pages integer"
+")";
public MyDatabaseHelper(Context context) {
super(context, "onceDB.db", null, dbVersion);
mContext = context;
}
// 创建数据库
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(createBookSql);
Toast.makeText(mContext, "Create Success", Toast.LENGTH_SHORT).show();
}
// 更新数据库
@Override
public void onUpgrade(SQLiteDatabase db, int i, int i1) {
db.execSQL("drop table if exists Book");
Toast.makeText(mContext, "onUpgrade Success", Toast.LENGTH_SHORT).show();
}
}
数据库操作帮助类:
package com.study.test.testapplication.database.control;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import com.study.test.testapplication.database.MyDatabaseHelper;
/**
* Create by BruceXuheng on 2018/6/5
* description :
**/
public class OnceDBControl {
private SQLiteDatabase db;
private static MyDatabaseHelper mInstance = null;
public synchronized static MyDatabaseHelper getInstance(Context context) {
if (mInstance == null) {
mInstance = new MyDatabaseHelper(context);
}
return mInstance;
}
public OnceDBControl(Context context) {
getInstance(context);
db = mInstance.getWritableDatabase();
}
public void insertMethod(){
db.execSQL("insert into Book values(?,?,?,?)",new Object[]{null,"你好","第三页",13.14});
}
public void lookMethod(){
Cursor cursor = db.rawQuery("select * from Book",null);
while (cursor.moveToNext()){
Log.e("chenxh",cursor.getString(cursor.getColumnIndex("id")));
Log.e("chenxh",cursor.getString(cursor.getColumnIndex("author")));
Log.e("chenxh",cursor.getString(cursor.getColumnIndex("pages")));
Log.e("chenxh",cursor.getString(cursor.getColumnIndex("price"))+"");
}
}
}