博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓开发学习笔记—————《第一行代码》第六章 持久化技术
阅读量:5846 次
发布时间:2019-06-18

本文共 4080 字,大约阅读时间需要 13 分钟。

Android系统主要提供了3种方式用于简单地实现数据持久化功能,即文件存储、SharedPreferences存储和数据库存储。

 

文件存储

默认位置在/data/data/<package name>/files/

public class MainActivity extends AppCompatActivity {    private EditText edit;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        edit = (EditText) findViewById(R.id.edit);    }    @Override    protected void onDestroy() {        super.onDestroy();        String inputText = edit.getText().toString();        save(inputText);    }    public void save(String inputText) {        FileOutputStream out ;        BufferedWriter writer = null;        try {            out = openFileOutput("data",Context.MODE_PRIVATE);            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();            }        }    }}

通过openFileOutput()得到一个FileOutputStream对象,再构建出一个OutputStreamWriter——BufferedWriter,通过BufferedWriter将文本内容写入到文件中。适合存储一些简单的文本数据或二进制数据。

 

从文件中读取数据

使用Context类中的openFileInput()方法。

 

SharedPreferences存储

实现记住密码功能

activity_login.xml

LoginActivity.java

public class LoginActivity extends AppCompatActivity {    private SharedPreferences pref;    private SharedPreferences.Editor editor;    private EditText accountEdit;    private EditText passwordEdit;    private Button login;    private CheckBox rememberPass;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_login);        pref = PreferenceManager.getDefaultSharedPreferences(this);        accountEdit = (EditText)findViewById(R.id.account);        passwordEdit = (EditText) findViewById(R.id.password);        rememberPass = (CheckBox) findViewById(R.id.remember_pass);        login = (Button)findViewById(R.id.login);        boolean isRemember = pref.getBoolean("remember_password",false);        if(isRemember) {            String account = pref.getString("account","");            String password = pref.getString("password","");            accountEdit.setText(account);            passwordEdit.setText(password);            rememberPass.setChecked(true);        }        login.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                String account = accountEdit.getText().toString();                String password = passwordEdit.getText().toString();                if(account.equals("admin")&&password.equals("123456")) {                    editor = pref.edit();                    if(rememberPass.isChecked()) {                        editor.putBoolean("remember_password",true);                        editor.putString("account",account);                        editor.putString("password",password);                    }else {                        editor.clear();                    }                    editor.apply();                    Intent intent = new Intent(LoginActivity.this,MainActivity.class);                    startActivity(intent);                    finish();                } else {                    Toast.makeText(LoginActivity.this,"account or password is invalid", Toast.LENGTH_SHORT).show();                }            }        });    }}

关键:得到SharedPreferences(三种方法,getSharedPreferences,getPreferences,getDefaultSharedPreferences),

          调用SharedPreferences.edit()方法获得Editor对象,

          添加数据(如editor.putString("name","Tom");

          最后editor.apply()提交。

 

SQLite数据库存储

关键:

创建一个自己的帮助类继承SQLiteOpenHelpe,重写onCreate()和onUpdate()。

通过getReadableDatebase()和getWritableDatabase()创建或打开一个数据库。

对数据的四种操作方法:insert、update、delete、query。

转载于:https://www.cnblogs.com/kyun/p/9857667.html

你可能感兴趣的文章
Centreon 安装部署指南
查看>>
项目管理修炼之道之规划项目
查看>>
学生机房PC也桌面虚拟化!
查看>>
Ext.Net 1.2.0_分析 Ext.Net.ResourceHandler 资源处理程序
查看>>
dedecms的arclist循环中判断第一个li添加css,否则不加
查看>>
java—三大框架详解,其发展过程及掌握的Java技术慨括
查看>>
Git 常用命令
查看>>
HDU 2289 Cup (二分)
查看>>
C#中使用Monitor类、Lock和Mutex类来同步多线程的执行
查看>>
[翻译] 使用CSS进行文字旋转
查看>>
读取本地已有的.db数据库
查看>>
C#发现之旅第十一讲 使用反射和特性构造自己的ORM框架
查看>>
使用GHOST对Windows操作系统进行备份和还原
查看>>
KMeans (K均值)算法讲解及实现
查看>>
为什么不应该使用Zookeeper做服务发现?(转载)
查看>>
《JavaScript核心概念及实践》——2.2 变量
查看>>
关于java 1.8的Lambda表达式详解
查看>>
各个网站的CSS清除代码
查看>>
TableView的集合
查看>>
软RAID管理命令mdadm详解
查看>>