Android面试准备 第二天 第五例 数据存储
參考:http://blog.csdn.net/lmj623565791/article/details/24015867
5、Activity用SharedPreferences保存数据,大小有木有限制?
个人理解:SharedPreferences是哪种存储数据的方式居然记不清楚了,个人印象中在第一行代码中,介绍了三种数据存储的方式。记得包括SharedPreferences,还有通过IO流把数据存储到手机本地文件下,仅仅记得SQLite数据库存储的方式。只是它们的使用方式已经忘干净了。
所以学习编程对我来说是背书嘛?还是编程有些固定的规则或者思路,供我有迹可循的背书。假定我默认了编程是思想的一种训练的,真的想知道学习编程和未学习对思考是否有本质的影响。
标准答案:这个真心查不到。
二次理解:我须要把数据存储的相关知识点再进行一次学习,试图通过反复记忆的方式探索对我个人思考是否有有效的帮组。比方反复多次以后我更深刻的记住了怎么使用相关方法。甚至更加奇妙的我能够举一反三,能更加高速的学习相似的内容。我眼下悲观的觉得,学习Android知识很多其它是知道提供哪些功能,熟悉它怎么使用,怎么更加的灵活的使用组装出符合要求的软件,至于为什么提供了这些对象和方法,我想很多其它的时候是由于Google在宏观层面,依据总体框架设计的须要而来,菜鸟的我仅仅能是盲人摸象。
知识点巩固:
依据第一行代码第六章 数据存储全方案,具体解释持久化技术,Android提供了三种存储数据的方式:
1、文件存储。
2、SharedPreference存储。
3、SQLite数据库存储
当中关于文件存储和SharedPreference存储,导致我记忆混乱的原因,大概是这两个存储方式的原理和使用方式差点儿是一样的,都会在手机指定文件夹下生成一个文件,而差别则是文件存储原封不动把你的内容拷贝文件里;而SharedPreference存储要求使用键值对的方式去存储数据,而且系统会依据键值对的内容。生成格式化的xml文件,这样的方式对于程序猿来说。首先xml是一种规范的文本形式。能够非常方便的读取和形成共享,所以我预计大部分开发都会选择后面这样的方式。
一、文件存储:
仅仅要记住一个方法,即openFileOutput(Filename,Mode),由Context提供,參数有两个。第一个參数是文件名称。它不须要指定路径,由于Android默认会在指定路线下生成该文件;第二个參数事实上是设置项,分为MODE_PRIVATE和MODE_APPEND,就是推断当程序运行时发现该名称的文件已经存在时,是直接覆盖该文件,还是在该文件内容基础上追加新的内容。最后openFileOutput方法返回一个字符输出流(FileOutputStream)。
代码实例:
UIActivity.xml:
package com.noodles.uipractice; 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 java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter; public class UIActivity extends AppCompatActivity implements View.OnClickListener { /**
* 1、把控件对象设置为成员变量,一般学习教程里面都是这样做的,
* 我感觉从JAVA的语言的特性来说,这样做变量的生命周期更长。
* 不会由于创建它的函数运行完成后消失
*/
private EditText editText; private Button btnSave; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ui); /**
* 2、获取控件的对象的引用
*/
editText = (EditText) findViewById(R.id.edit_text);
btnSave = (Button) findViewById(R.id.btn_save); /**
* 3、给button定义事件。点击后把editText中内容保存下来。 */
btnSave.setOnClickListener(this);
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_save:
String text = editText.getText().toString();
if ("".equals(text)) {
Toast.makeText(this, "文本内容为空", Toast.LENGTH_SHORT).show();
} else {
BufferedWriter bw = null;
try {
FileOutputStream fos = openFileOutput("data", MODE_PRIVATE);
bw = new BufferedWriter(new OutputStreamWriter(fos));
bw.write(text);
} catch (java.io.IOException e) {
e.printStackTrace();
} finally {
try {
if(bw != null) {
bw.close();
}
} catch (IOException e) {
e.printStackTrace();
} }
}
break;
default:break;
}
}
}
activity_ui.xml:
<? xml version="1.0" encoding="utf-8"? >
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"> <EditText
android:id="@+id/edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content" /> <Button
android:id="@+id/btn_save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Save" /> </LinearLayout>
保存页面:
文件路径:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
文件内容:
二、SharedPreference存储。
1、获取SharedPreference对象。三种方式:
- Context的getSharedPreference(),接收两个參数。第一个就是文件名称,第二个模式有MODE_PRIVATE和MODE_MULTI_PROCESS,第1个參数表示仅仅有本程序能够对该文件进行读写。第2个參数表示多个程序能够对该文件进行读写。
- Activity的getPreference(),它接收一个操作模式參数。会以当前活动的类名为文件名称,在活动中应该是两个方法都能够用,差别就是你需不须要自己定义文件名称。第三个方法同理,由于静态方法,通过类名调用。在不论什么类中都能够调用。所以仅仅是文件名称的差别吧。
- 通过PreferenceManager类中getDefaultSharedPreference()方法。这是静态方法,自己主动使用应用程序的包名作为文件名称。
package com.noodles.uipractice; 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.TextView;
import android.widget.Toast; public class UIActivity extends AppCompatActivity implements View.OnClickListener { private EditText editText; private Button btnSave,btnRead; private TextView textView; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ui); /**
* 2、获取控件的对象的引用
*/
editText = (EditText) findViewById(R.id.edit_text);
textView = (TextView) findViewById(R.id.text_view);
btnSave = (Button) findViewById(R.id.btn_save);
btnRead = (Button) findViewById(R.id.btn_read); /**
* 3、给button定义事件,点击后把editText中内容保存下来。
*/
btnSave.setOnClickListener(this);
btnRead.setOnClickListener(this);
} @Override
public void onClick(View v) {
SharedPreferences sharedPreferences = getSharedPreferences("data", MODE_PRIVATE);
switch (v.getId()) {
case R.id.btn_save:
String text = editText.getText().toString();
if ("".equals(text)) {
Toast.makeText(this, "文本内容为空", Toast.LENGTH_SHORT).show();
} else {
//获取SharedPreference对象。调用Context的getSharedPreference方法
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("EditView",text);
editor.commit();
}
break;
case R.id.btn_read:
//通过获取的SharedPreference对象的getXXX方法获取文件里的值。 String getText = sharedPreferences.getString("EditView", "");
textView.setText(getText);
break;
default:break;
}
}
}
保存页面:
路径:
内容:
Android面试准备 第二天 第五例 数据存储的更多相关文章
- Android五种数据存储方式
android 五种数据存储 :SharePreferences.SQLite.Contert Provider.File.网络存储 Android系统提供了四种存储数据方式.分别为:SharePre ...
- Android系统的五种数据存储形式(二)
之前介绍了Android系统下三种数据存储形式,今天补充介绍另外两种,分别是内容提供者和网络存储.有些人可能认为内存提供者和网络存储更偏向于对数据的操作而不是数据的存储,但这两种方式确实与数据有关,所 ...
- Android系统的五种数据存储形式(一)
Android系统有五种数据存储形式,分别是文件存储.SP存储.数据库存储.contentprovider 内容提供者.网络存储.其中,前四个是本地存储.存储的类型包括简单文本.窗口状态存储.音频视频 ...
- [ Android 五种数据存储方式之四 ] —— ContentProvider存储数据
Android这个系统和其他的操作系统还不太一样,我们需要记住的是,数据在Android当中是私有的,当然这些数据包括文件数据和数据库数据以及一些其他类型的数据.那这个时候有读者就会提出问题,难道两个 ...
- 【原创Android游戏】--猜数字游戏V1.1 --数据存储,Intent,SimpleAdapter的学习与应用
--------------------------------------------------------------- V0.1版本 上次做完第一个版本后,发现还有一些漏洞,并且还有一些可以添 ...
- Android面试准备 第一天 第2-4例
參考:http://blog.csdn.net/lmj623565791/article/details/24015867. .假设有个100M大的文件.须要上传至server中.而serverfor ...
- Android中常用的五种数据存储方式
第一种: 使用SharedPreferences存储数据 适用范围: 保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小 ...
- [ Android 五种数据存储方式之二 ] —— 文件存储数据
关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 文件可用来存放大量数据,如文本.图片.音 ...
- [ Android 五种数据存储方式之一 ] —— SharedPreferences存储数据
SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. 主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceS ...
随机推荐
- Poj1734题解
题目大意 求一个无向图的最小环 题解 假设是有向图的话.仅仅须要令f[i][i]=+∞,再floyd就可以: 对无向图.应该在floyd算法循环至k的一開始进行例如以下操作: 枚举i和j,假设点i存在 ...
- php实现排列组合
php实现排列组合 一.总结 1.回溯:回溯的函数参数有些生疏了,记录递归的位置(pos或step),还要有东西(vis数组)来记录这个是否已经被访问 2.php全局变量的使用 :外部定义的普通变量, ...
- Arrays.asList()方法的限制
Arrays.asList()方法的限制是他对所产生的List类型做出了最理想的假设 package example; import java.util.Arrays; import java.uti ...
- jQuery选择器,Ajax请求
jQuery选择器: $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $( ...
- unity3d 改动gui label颜色,定义颜色需除以256
GUIStyle titleStyle2 = new GUIStyle(); titleStyle2.fontSize = 20; titleStyle2.normal.textColor = new ...
- bitmap2drawable-两者的转化实现
先来看今天遇到的一个问题,是关于mms报错的.后来发现报的地方如下 Bitmap deleteBitMap = ((BitmapDrawable)mChipDelete).getBitmap(); D ...
- C Tricks(十八)—— 整数绝对值的实现
为正还是为负:(对 int 类型而言,第一位为符号位,其余为数值,则右移 31 位,再与 1 求与) 如果为正 ⇒ 返回原值 如果为负 ⇒ 对其二进制形式各位取反 + 1 int abs(int x) ...
- Jszip的使用和打包下载图片
因为canvas总结到后面又想到了jszip的一些事情,那就索性也回去看看吧.试过,至少谷歌和火狐都是支持jszip的. 1. jszip的使用 官方文档说的很清楚了,而且也有读取zip文件.生成z ...
- Oracle学习总结(10)——45 个非常有用的 Oracle 查询语句
****************************** 日期/时间 相关查询 ***************************** -- 1.获取当前月份的第一天 sele ...
- 洛谷 P2118 比例简化
P2118 比例简化 题目描述 在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果.例如,对某一观点表示支持的有1498 人,反对的有 902人,那么赞同与反对的比例可以简单的记为149 ...