『Android 1行目コード』first reading 9
10665 ワード
データ永続化とは、それらのメモリの瞬時データを記憶装置に保存し、携帯電話やパソコンの電源を切った場合でも、これらのデータが失われないことを保証することです.メモリに保存されたデータは瞬時状態であり、記憶装置に保存されたデータは永続状態であり、永続化技術は、瞬時状態と永続状態との間でデータを変換するメカニズムを提供する
ファイルストレージ
ファイルストレージプロセス:書き込み:openFileOutput(",Context.MODE_PRIVATE)メソッドを使用してFileOutput Streamを返します.このオブジェクトを取得すると、Javaストリームを使用してファイルにデータを書き込むことができます. 読み:openFileInput(")メソッドを使用してFileInputStreamオブジェクトを方輝し、Javaストリームを介してデータを読み取ることができます.
SharedPreferences
SharedPreferencesストレージプロセス: SharedPrecencesオブジェクトの取得方法1:ContextクラスのgetSharedPreferences()メソッド2:ActivityクラスのgetPreference()メソッド3:PreferenceManagerクラスのgetDefultSharedPreferences() SharedPreferencesオブジェクトのedit()メソッドを呼び出してSharedPrefencesを取得する.Editorオブジェクト putXX()を使用してEditorオブジェクトにデータを追加するか、getXX()メソッドでデータ を取得します.データを追加するときのみ、apply()メソッドを呼び出して追加するデータをコミットし、データ格納動作 を完了する.
SQLiteデータベースストレージ
SQLiteはAndroidに内蔵されたデータベースです SQLiteOpenHelperヘルプクラスを定義します(この例では、2つのメソッド . ActivityでSQLiteOpenHelperオブジェクトをインスタンス化する は、 を呼び出す.
注意:データベースが一度作成されると、MyDatabaseHelperは
ファイルストレージ
ファイルストレージプロセス:
public class MainActivity extends AppCompatActivity {
// , EditText
private EditText edit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edit = (EditText) findViewById(R.id.edit);
//
String inputText = load();
if (!TextUtils.isEmpty(inputText)){// null
edit.setSelection(inputText.length());//
edit.setText(inputText);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
String inputText = edit.getText().toString();
//
save(inputText);
}
public void save(String inputText){
FileOutputStream out = null;
BufferedWriter writer = null;
try {
//openFileOutput("data", Context.MODE_PRIVATE) , :MODE_PRIVATE ,MODE_APPEND 。
// /data/data//files/data
out = openFileOutput("data", Context.MODE_PRIVATE);
//java
writer = new BufferedWriter(new OutputStreamWriter(out));
writer.write(inputText);
}catch (IOException e){
e.printStackTrace();
}finally {
try{
if (writer != null){
writer.close();
}
}
catch (IOException e){
e.printStackTrace();
}
}
}
public String load(){
FileInputStream in = null;
BufferedReader reader = null;
StringBuilder content = new StringBuilder();
try{
//openFileInput("data" "data",
in = openFileInput("data");
reader = new BufferedReader(new InputStreamReader(in));
String line = "";
//reader.readLine() ,
while ((line = reader.readLine())!= null){
content.append(line);
}
}catch (IOException e){
e.printStackTrace();
}
return content.toString();
}
}
SharedPreferences
SharedPreferencesストレージプロセス:
// ,
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private String TAG = "MainActivity";
private Button save_btn;
private Button restore_btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
save_btn = (Button) findViewById(R.id.save_btn);
restore_btn = (Button) findViewById(R.id.restore_data);
save_btn.setOnClickListener(this);
restore_btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.save_btn:
//getSharedPreferences("data",MODE_PRIVATE) :
//"data" ,MODE_PRIVATE SharedPrefences 。
SharedPreferences.Editor editor = getSharedPreferences("data",MODE_PRIVATE).edit();
editor.putString("name","Tom");
editor.putInt("age",23);
editor.putBoolean("married",false);
editor.apply();
break;
case R.id.restore_data:
SharedPreferences preferences = getSharedPreferences("data",MODE_PRIVATE);
String name = preferences.getString("name","data is bull");
int age = preferences.getInt("age",-1);
boolean married = preferences.getBoolean("married",false);
Log.d(TAG,"name is " + name);
Log.d(TAG, "age is " + age);
Log.d(TAG, "married is " + married);
break;
default:
break;
}
}
}
SQLiteデータベースストレージ
SQLiteはAndroidに内蔵されたデータベースです
getReadableDatabase()
、getWritableDatabase()
の2つのメソッドがデータベースを開くことができますが、データベースが書き込めない場合、getReadableDatabase()
メソッドが返すオブジェクトは読み取り専用でデータベースを開き、getWritableDatabase()
メソッドで異常が発生します)getReadableDatabase()
またはgetWritableDatabase()
メソッド// SQLiteOpenHelper
public class MyDatabaseHelper extends SQLiteOpenHelper{
//SQL
public static final String CREATE_BOOK = "create table Book ("
+"id integer primary key autoincrement, "
+"author text, "
+"price real, "
+"pages integer, "
+"name text)";
public String DROP_BOOK = "drop table if exists Book";
public String CREATE_CATEGORY = "create table Category ("
+"id integer primary key autoincrement, "
+"category_name text, "
+"category_code integer)";
public String DROP_CATEGORY = "drop table if exists Category";
private Context mContext;
public MyDatabaseHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
mContext = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
// SQL ,
db.execSQL(CREATE_BOOK);
db.execSQL(CREATE_CATEGORY);
Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show();
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {//
// SQL ,
db.execSQL(DROP_BOOK);
db.execSQL(DROP_CATEGORY);
onCreate(db);
}
}
// 5 button
public class MainActivity extends AppCompatActivity {
// ButterKnife
@BindView(R.id.create_database)
Button createDatabase;
@BindView(R.id.add_data)
Button addData;
@BindView(R.id.updata_data)
Button updataData;
private MyDatabaseHelper databaseHelper;
private String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// MyDatabaseHelper :
//context; ; Cursor, null; ,
databaseHelper = new MyDatabaseHelper(this,"BookStore.db",null,3);
ButterKnife.bind(this);
}
@OnClick({R.id.create_database,R.id.add_data,R.id.updata_data,R.id.delete_data,R.id.select_data})
public void onClick(View v){
switch (v.getId()){
case R.id.create_database:
databaseHelper.getWritableDatabase();
break;
case R.id.add_data:
SQLiteDatabase db = databaseHelper.getWritableDatabase();
// ContentValues
ContentValues values = new ContentValues();
//
values.put("name","The Da Vinci Code");
values.put("author","Dan Brown");
values.put("pages",454);
values.put("price",16.96);
db.insert("Book",null,values);//
values.clear();
//
values.put("name","The Lost Symbol");
values.put("author","Dan Brown");
values.put("pages",510);
values.put("price",19.95);
db.insert("Book",null,values);//
break;
case R.id.updata_data:
SQLiteDatabase dbUpdata = databaseHelper.getWritableDatabase();
ContentValues valuesUpdata = new ContentValues();
valuesUpdata.put("price",10.99);
dbUpdata.update("Book",valuesUpdata,"name = ?",new String[]{
"The Da Vinci Code"
});
break;
case R.id.delete_data:
SQLiteDatabase dbDelete = databaseHelper.getWritableDatabase();
dbDelete.delete("Book","pages > ?", new String[]{"500"});
break;
case R.id.select_data:
SQLiteDatabase dbSelect = databaseHelper.getWritableDatabase();
// Book
Cursor cursor = dbSelect.query("Book",null,null,null,null,null,null);
if (cursor.moveToFirst()){
do {
// Cursor ,
String name = cursor.getString(cursor.getColumnIndex("name"));
String author = cursor.getString(cursor.getColumnIndex("author"));
int pages = cursor.getInt(cursor.getColumnIndex("pages"));
double price = cursor.getDouble(cursor.getColumnIndex("price"));
Log.d(TAG, "book name is " + name);
Log.d(TAG, "book author is " + author);
Log.d(TAG, "book price is " + price);
}while (cursor.moveToNext());
}
cursor.close();
break;
}
}
}
注意:データベースが一度作成されると、MyDatabaseHelperは
onCreate()
メソッドを再度呼び出すことはありません.これはupgrade()
を呼び出す必要があります.バージョン番号が以前より大きくなれば更新できます.