目录
  • 文件存储

    • 将数据存储到文件中
    • 从文件中读取数据
  • SharedPreferences存储
    • 将数据存储到SharedPreferences中

      • 步骤
    • 从SharedPreferences中读取数据
      • 步骤
  • 实例:用SharedPreferences实现记住密码功能

瞬时数据是指存储在内存中的数据。持久化技术可以将内存中的数据和持久状态(保存在存储设备上)之间相互转化。
Android提供了三种持久化方式

文件存储

文件存储不对存储内容进行任何的格式化处理,所有数据都是原封不动保存到文件当中。

将数据存储到文件中

Context类中提供了一个openFileOutput()方法,返回一个FileOutputStream对象,然后就可以用javaI/O流去写文件中了。文件都默认放在/data/data//files/目录下。

public void save(String data){FileOutputStream out=null;BufferedWriter writer=null;try{out=openFileOutput("data", Context.MODE_PRIVATE);//第一个参数是文件的名称,第二个参数是模式。MODE_PRIVATE表示覆盖,MODE_APPEND表示追加。writer=new BufferedWriter(new OutputStreamWriter(out));writer.write(data);}catch (IOException e){e.printStackTrace();}finally {try {if(writer!=null)writer.close();}catch (IOException e){e.printStackTrace();}}}

从文件中读取数据

Context类还提供了一个openFileInput(),返回的是一个FileInputStream。它接收一个参数,即要读取的文件名。然后系统会去/data/data//files/目录下寻找。

public String load(String name){FileInputStream input=null;BufferedReader reader=null;StringBuilder content=new StringBuilder();try {input=openFileInput(name);reader=new BufferedReader(new InputStreamReader(input));String line="";while((line=reader.readLine())!=null){content.append(line);}}catch (IOException e){e.printStackTrace();}finally {try {if(reader!=null)reader.close();}catch (IOException e){e.printStackTrace();}}return content.toString();}

SharedPreferences存储

SharedPreferences是使用键值对的方式来存储数据的

将数据存储到SharedPreferences中

步骤

1.获取SharedPreferences对象

  • Context类中的getSharedPreferences()方法

此方法接收两个参数,第一个参数用于指定SharedPreferences文件的名称,如果直接的名称文件不存在,则会创建一个文件,SharedPreferences文件都是存放在/data/data//shared_prefs/目录下。第二个参数用于指定操作模式,目前只有MODE_WORLD_READABLE这一种模式可选,它是默认的操作模式,和直接传入0效果是相同的,表示只有当前的应用才可以对这个文件进行读写.

  • Activity类中的getPreferences()方法

只接收一个操作模式参数,因为自动将当前活动的类名当作SharedPreferences的文件名

  • PreferenceManager类中的getDefaultSharedPreferences()方法

这是一个静态方法,它接收一个Context参数,并自动使用当前应用程序的包名作为前缀来命名SharedPreferences文件。


2.向SharedPreferences中存储数据

(1)调用SharedPreferences对象的edit()方法来获取一个SharedPreferences.Editor对象
(2)向SharedPreferences.Editor对象中添加数据,比如添加一个布尔型数据就使用putboolean()方法等
(3)调用apply()方法将添加的数据提交,从而完成数据存储操作

从SharedPreferences中读取数据

步骤

1.获取SharedPreferences对象
2.从SharedPreferences中读取数据

直接使用SharedPreferences对象的getxxx(键,默认值)方法获取对应类型值


实例:用SharedPreferences实现记住密码功能

1.新建LoginActivity活动
布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:text="Account:"android:textSize="18dp"android:layout_gravity="center"/><EditTextandroid:id="@+id/account"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:layout_gravity="center_vertical"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="60dp"><TextViewandroid:layout_width="90dp"android:layout_height="wrap_content"android:text="Password:"android:textSize="18dp"android:layout_gravity="center_vertical"/><EditTextandroid:id="@+id/password"android:layout_width="0dp"android:layout_weight="1"android:layout_height="wrap_content"android:inputType="textPassword"android:layout_gravity="center_vertical"/></LinearLayout><CheckBoxandroid:id="@+id/remeber"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="remember password"/><Buttonandroid:id="@+id/login"android:layout_gravity="center"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Login"/></LinearLayout>

LoginActivity类:

ublic class LoginActivity extends AppCompatActivity {private SharedPreferences sharedPreferences;private SharedPreferences.Editor editor;private EditText account;private EditText password;private CheckBox isRemeber;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_login);sharedPreferences= PreferenceManager.getDefaultSharedPreferences(this);account=(EditText)findViewById(R.id.account);password=(EditText)findViewById(R.id.password);isRemeber=(CheckBox)findViewById(R.id.remeber);if(sharedPreferences.getBoolean("isRemeber",false)){//之前记住过密码account.setText(sharedPreferences.getString("account",""));password.setText(sharedPreferences.getString("password",""));isRemeber.setChecked(true);}Button button=(Button)findViewById(R.id.login);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {String accountstr=account.getText().toString();String passwordstr=password.getText().toString();if(accountstr.equals("admin")&&passwordstr.equals("123456")) {editor=sharedPreferences.edit();if (isRemeber.isChecked()) {//选择记住密码editor.putBoolean("isRemeber",true);editor.putString("account", accountstr);//保存账户editor.putString("password", passwordstr);//保存密码}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 invald",Toast.LENGTH_SHORT).show();}}});}
}

Android持久化技术相关推荐

  1. Android第一行代码学习思考笔记(碎片、广播、持久化技术和Android数据库)

    Android第一行代码学习思考笔记(碎片.广播.持久化技术和Android数据库 第四章 手机平板要兼顾--探究碎片 4.1碎片是什么(Fragment) 4.2碎片的使用方式 4.2.1碎片的简单 ...

  2. Android数据持久化技术

    Android 数据持久化技术 数据持久化 文件存储 将数据存储到文件中 从文件中读取数据 SharedPreferences存储 使用SharedPreferences存储数据 从SharedPre ...

  3. Android数据存储全方案——持久化技术

    数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备 中的数据是处于持久状态的,持久化技 ...

  4. Android之数据持久化技术

    一.数据持久化技术概述 1.数据持久化:指将那些内存中的瞬时数据保存到存储设备当中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失. 2.持久化技术提供了一种机制可以让数据在瞬时状态和持久状态 ...

  5. Android学习笔记(6)——详解持久化技术

    第六章 数据存储权方案--详解持久化技术 6.1 持久化技术简介 概述:Android 系统中主要提供了3种方式用于简单地实现数据持久化功能,即文件存储.SharedPreference存储以及数据库 ...

  6. 第一行代码学习笔记第六章——详解持久化技术

    知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...

  7. 第6章 数据存储全方案,详解持久化技术

    所有的App都可以说是与数据打交道的,离开数据它们什么都不是.那么平时我们怎么存储一些关键的数据呢? 1 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关 ...

  8. 安卓学习之持久化技术(数据库操作)

    1.持久化技术简介 让数据在瞬时状态和持久化状态进行转换的机制. 主要包括文件存储.shareOreference存储以及数据库存储. 2.文件存储 1.将数据存储到文件中 Context 类中提供了 ...

  9. 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术

    本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...

  10. 7_数据存储持久化技术

    持久化技术 持久化技术就是将那些在内存中的瞬时数据存储到存储设备中,使其成为持久数据 文件存储 SharedPregerences存储 数据库存储 文件存储 数据存储到文件中 Context类中提供了 ...

最新文章

  1. JAVA中怎么设置文本域位置_java – 如何在JTextArea中更改文本的位置
  2. 用OpenJTAG烧写程序到Flash—— 韦东山嵌入式Linux视频学习笔记03
  3. MVC5网站部署到IIS7
  4. Val编程-系统架构
  5. 配色方案专辑上线,宠溺设计师的好素材!
  6. 修改linux默认语言
  7. zTree实现地市县三级级联报错(一)
  8. 大数据对医学发展有什么影响
  9. mac更新完后读取不出移动硬盘的问题解决
  10. 2021级南航计算机专硕829备考记录
  11. 2020年第六届 美亚杯电子取证 团体赛 wp
  12. Springboot毕设项目会议预约系统设计与实现3if68(java+VUE+Mybatis+Maven+Mysql)
  13. 3D打印:FDM打印湿度对打印件及打印机的影响和调整
  14. qtabwidget设置表头_QTableWidget添加表头菜单 并 可以通过表头菜单隐藏选中列
  15. Eureka Client启动后就关闭 Unregistering application xxx with eureka with status DOWN
  16. MNE-Python | 开源生理信号分析神器(一)
  17. 将CAD图纸转换为黑白的PDF文件要怎么操作
  18. 项目实战4——uniapp在线升级关联云空间
  19. Qt5.13.0虚拟键盘 使用文档说明及函数说明 (一)构建 build
  20. HTTP常见返回码(如:301,400,503)

热门文章

  1. 服务端开发所需技能归纳
  2. mac osx 系统 brew install hadoop 安装指南
  3. IE浏览器中发送到onenote的选项没有调出来??
  4. 正太分布几个简单证明
  5. 充分统计量(Sufficient Statistics)
  6. 拓端tecdat|R语言样条曲线、分段线性回归模型piecewise regression估计个股beta值分析收益率数据
  7. 拓端tecdat|Python用ARIMA和SARIMA模型预测销量时间序列数据
  8. 拓端tecdat|R语言在RCT中调整基线时对错误指定的稳健性
  9. java文件字节流和文件字符流的使用
  10. php图片发送另一台,PHP从一台服务器将图片发送到另一台服务器并保存