Android关于保存数据(Saving data)

1.SharedPreferences(key-value)

  SharedPreferences保存的数据主要是类似于配置信息格式的数据,因此保存的数据主要是简单类型的键值对(key-value),它保存的是一个XML文件。

  (1)创建sharedPreferences的两种方法:getSharedPreferences(String name, int mode)----如果你需要通过一个标识(name)来区分不同的sharedPreferences文件

                       getPreferences(int mode)            ----如果在一个activity中只需要使用一个sharedPreferences,不需要区分      

     mode:是指定读写方式,其值有三种,分别为:

              Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读、写

              Context.MODE_WORLD_READABLE:指定该SharedPreferences数据能被其他应用程序读,但不能写

              Context.MODE_WORLD_WRITEABLE:指定该SharedPreferences数据能被其他应用程序读写。

  (2)编辑sharedPreferences    


方法名称


描述


public abstract boolean contains (String key)                                        


判断SharedPreferences是否包含特定key的数据


public abstract SharedPreferences.Editor edit ()


返回一个Edit对象用于操作SharedPreferences


public abstract Map<String, ?> getAll ()


获取SharedPreferences数据里全部的key-value对


getXXX(String key,XXX defvlaue)


获取SharedPreferences数据指定key所对应的value,如果该key不存在,返回默认值defValue。其中XXX可以是boolean、float、int、long、String等基本类型的值

  (3)写入数据和读取数据

方法名称 描述

public abstract SharedPreferences.Editor clear ()              


清空SharedPreferences里所有的数据


public abstract boolean commit ()


当Editor编辑完成后,调用该方法可以提交修改,而且必须要调用这个数据才修改


public abstract SharedPreferences.Editor putXXX (String key, typexxx XXX)


向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值


public abstract SharedPreferences.Editor getXXX (String key, typexxx XXX)


取出向SharedPreferences存入指定的key对应的数据,其中XXX可以是boolean、float、int、long、String等基本类型的值


public abstract SharedPreferences.Editor remove (String key)


删除SharedPreferences里指定key对应的数据项

2.Saving files

  所有的Andr??oid设备有两个文件存储区:“内部”和“外部”存储。外部存储主要是SD卡;

  内部存储区域:总是可用,并且之辈自己的应用程序访问;

  外部存储设备:不总是可用,被用户或者一些软件挂在后便不可使用,这是世界可读的,所以在这里保存的文件可能会之外的控制读取。外部存储是不需要访问限制文件和要与其他应用程序共享或允许用户用电脑访问文件的最佳场所;

  (1)设置你的应用获得外部存储的权限(读和写)

<manifest ...>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    ...
</manifest>
<manifest ...>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    ...
</manifest>

  将文件存储在内部存储区域不需要设置任何权限  

  (2)将文件保存在内部存储区域

    获得内部存储文件目录的两个方法:

    getFilesDir():返回表示你的应用程序内部的目录文件。

    getCacheDir():返回表示你的应用程序的临时缓存文件内部目录中的文件

  创建非缓存目录文件方法:

File file = new File(context.getFilesDir(), filename);
String filename = "myfile";
String string = "Hello world!";
FileOutputStream outputStream;

try {
  outputStream = openFileOutput(filename, Context.MODE_PRIVATE);
  outputStream.write(string.getBytes());
  outputStream.close();
} catch (Exception e) {
  e.printStackTrace();
}

  创建缓存目录下文件方法:

public File getTempFile(Context context, String url) {
    File file;
    try {
        String fileName = Uri.parse(url).getLastPathSegment();
        file = File.createTempFile(fileName, null, context.getCacheDir());
    catch (IOException e) {
        // Error while creating file
    }
    return file;
}

  (3)将文件保存在外部存储区域

    由于外部存储设备可能出现不能获取的情况 例如没有或者被挂载,因此在使用之前必须要检测是否可用,使用方法getExternalStorageState() 如果得到的值等于 MEDIA_MOUNTED,则表示外部存储设备是可使用的;

/* Checks if external storage is available for read and write */
public boolean isExternalStorageWritable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state)) {
        return true;
    }
    return false;
}

/* Checks if external storage is available to at least read */
public boolean isExternalStorageReadable() {
    String state = Environment.getExternalStorageState();
    if (Environment.MEDIA_MOUNTED.equals(state) ||
        Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {
        return true;
    }
    return false;
}

  

    

时间: 2024-08-14 23:47:33

Android关于保存数据(Saving data)的相关文章

Android 中保存数据到文件中

1.在安卓开发中,会遇到保存数据到手机中以及从手机中获取数据的情况 /** * 把数据存放到手机内存中 * * @param number * @param password * @return */ public static boolean saveUserInfo(Context context, String number, String password) { try { // getCacheDir()方法用于获取/data/data/<package name>/cache目录

android之保存数据一(SharedPreference)

此保存方式适用于简单数据的保存,如其名属于配置性质的保存,不适合数据比较大的保存方式. //打开文件 //参数1:指定文件名,不加后缀 //参数2:指定文件的操作模式,不同的模式权限不同 //文件存在则打开,否则新建 SharedPreferences sp = getSharedPreferences("setting",MODE_PRIVATE); //获取数据 //参数1:关键字 //参数2:缺省值,此关键字不存在时返回缺省值 String name = sp.getString

android登录实现,存储数据到/data/data/包名/info.txt

1.一个简单登录界面布局代码如下: @1采用线性布局加相对布局方式 @2线性布局采用垂直排列 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"

Android处理运行时变更保存数据状态恢复Activity

一.概述 运行时变更就是设备在运行时发生变化(例如屏幕旋转.键盘可用性及语言).发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态. 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关应用状态的数据. 然后在 onCreate() 或 onRestoreInstanceState() 期间恢复 Activity 状态. 对于大量数据:用

Android学习笔记-保存数据的实现方法1

Android开发中,有时候我们需要对信息进行保存,那么今天就来介绍一下,保存文件到内存,以及SD卡的一些操作,及方法,供参考. 第一种,保存数据到内存中: //java开发中的保存数据的方式 public static boolean saveUserInfo(String username,String password){ File file = new File("/data/data/com.ftf.login/info.txt"); try { FileOutputStre

Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制

一.需求 做一个类似QQ登录似的app,将数据写到ROM文件里,并对数据进行回显. 二.截图 登录界面: 文件浏览器,查看文件的保存路径:/data/data/com.amos.datasave/files/LoginTest.txt------/data/data/(包名)/files/(文件名) 导出的文件内容: 三.实现代码 新建一个Android 工程.这里我选择的是2.1即API 7,进行开发的,其它都是默认下一步下一步即可. /datasave/res/layout/activity

android应用的数据应该保存到哪儿

做android app开发会涉及到不同数据的保存,比如数据缓存,客户登陆信息保存,客户状态的保存等等. 那针对这不同的数据我们应该保存在什么地方呢? 1.应用卸载也不会删除的数据 直接在sdCard根目录创建一个文件夹,保存数据. 优点:保存时间长,应用卸载也不会被删除.缺点:任何人都可以访问这个目录. 2.跟随应用的存在而存在的数据 Context.getExternalFilesDir()方法可以获取到 SDCard/Android/data/你的应用的包名/files/ 以上这个目录会随

Android native CursorWindow数据保存原理

我们通过Uri查询数据库所得到的数据集,保存在native层的CursorWindow中.CursorWindow的实质是共享内存的抽象,以实现跨进程数据共享.共享内存所采用的实现方式是文件映射. 在ContentProvider端透过SQLiteDatabase的封装查询到的数据集保存在CursorWindow所指向的共享内存中,然后通过Binder把这片共享内存传递到ContentResolver端,即查询端.这样客户就可以通过Cursor来访问这块共享内存中的数据集了. 那么CursorW

Android 学习笔记之实时保存数据-现场保护onSaveInstanceState()

数据保存:在软件开发中我们希望保存下各个Activity数据,以实现客户数据的时时保存,达到较好的用户体验. 那么我们需要解决如下问题: 1.什么时候保存? 2.保存哪些数据? 我想保存应用产生的数据,而这些用户的数据是在Activity与用户进行交互的时候产生的,就是界面上的数据,或者状态. 3.如何进行保存? 4.保存到哪里? 5.编写合适的例子? 创造思路,去哪寻找答案,首先,我想保存应用产生的数据,而这些用户的数据是在Activity与用户进行交互的时候产生的,所以我们进入Activit