@excavator
2015-05-28T20:58:25.000000Z
字数 4705
阅读 2290
Android
慕课
数据存储
SharedPreference:
- 是一种轻型的数据存储方式
- 本质是基于XML文件存储key-value键值对数据
- 通常用于存储一些简单的配置信息
实现SharedPreferences存储的步骤如下:
package com.excavator.datastorage;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText etUserName, etUserPass;
CheckBox chk;
SharedPreferences pref;
SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
/* SharedPreferences pref = getSharedPreferences("myPref", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
editor.putString("name", "张三");
editor.putInt("age", 30);
editor.putLong("time", System.currentTimeMillis());
editor.putBoolean("default", true);
editor.apply();
editor.remove("default");
editor.apply();
System.out.println(pref.getString("name", ""));
System.out.println(pref.getInt("age", 0));*/
initViews();
pref=getSharedPreferences("UserInfo", MODE_PRIVATE);
editor = pref.edit();
String name=pref.getString("userName", "");
if (name==null) {
chk.setChecked(false);
}else {
chk.setChecked(true);
etUserName.setText(name);
}
}
private void initViews() {
etUserName = (EditText) findViewById(R.id.et_userName);
etUserPass = (EditText) findViewById(R.id.et_passWord);
chk = (CheckBox) findViewById(R.id.checkSaveName);
}
public void doClick(View view) {
switch (view.getId()){
case R.id.btn_Login:
String name = etUserName.getText().toString().trim();
String pass = etUserPass.getText().toString().trim();
if ("admin".equals(name)&&"123456".equals(pass)){
if (chk.isChecked()) {
editor.putString("userName", name);
editor.apply();
}else {
editor.remove("userName");
editor.apply();
}
Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_LONG).show();
}else {
Toast.makeText(MainActivity.this, "禁止登录", Toast.LENGTH_LONG).show();
}
break;
default:
break;
}
}
}
SQLite简介:
SQLite是D.Richard Hipp用C语言编写的开源嵌入式数据库引擎。它支持大多数的SQL92标准,并且可以在所有主要的操作系统上运行。
Cursor是Android查询数据后得到的一个管理数据集合的类,正常情况下,如果查询得到的数据量较小时不会有内存问题,而且虚拟机能够最终保证Cursor最终被释放掉。
然而如果Cursor的数据量特别大,特别是如果里面有Blob信息时,应该保证Cursor占用的内存被及时释放掉,而不是等待GC来处理。并且Android明显是倾向于编程者手动的将Cursor close掉,因为在源代码中我们发现,如果等到垃圾回收器来回收时,也就是如>果不手动关闭,系统会报错,会给用户以错误提示。
ContentValues:用于存储一组可以被ContentResolver处理的值
ContentValues values=new ContentValues(); //类似HashMap key value
valuse.put("name","Jack");
执行对应的SQL操作
Android中 文件存储的操作:
- Activity的openFileOutput()方法可以用于把数据保存到文件中
- 创建的文件保存在/data/data//files目录
- 实现过程与在Java中保存数据到文件中一样
文件的模式:
Android中有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userId,当该应用要去访问其他资源比如文件的时候,就需要userId匹配。默认情况下,任何应用创建的文件,SharedPreferences,数据库都应该是私有的(位于/data/data//files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE,只有这样其他程序才能正确访问。
在此输入正文