精华内容
下载资源
问答
  • 熟悉android种数据存储方式,可以分别看到这五种数据存储过程
  • 主要介绍了Android种数据存储的应用方式的相关资料,希望通过本文能帮助到大家,让大家理解掌握Android存储数据的方法,需要的朋友可以参考下
  • 主要为大家详细介绍了四种Android数据存储方式,感兴趣的小伙伴们可以参考一下
  • 主要为大家整理了5种Android数据存储方式,列出了各存储方式的优缺点,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 主要介绍了Android编程中的5种数据存储方式,结合实例形式详细分析了Android实现数据存储的5中实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Android存储数据三种方式

    千次阅读 2019-09-17 23:21:14
    Android中,数据存储主要有三种,文件存储、Sp、SQLite。文件存储就是我们平时的IO流,是非常传统的一种方式。而Sp是Android中的,利用XML文件存储数据的一种方式,要比文件存储简单。SQLite就是一个数据库了,...

    今天来给大家讲一下Android中如何存储数据。我编写Android使用的是Java语言,所以今天讲的也是Java版的数据存储。在Android中,数据存储主要有三种,文件存储、Sp、SQLite。文件存储就是我们平时的IO流,是非常传统的一种方式。而Sp是Android中的,利用XML文件存储数据的一种方式,要比文件存储简单。SQLite就是一个数据库了,基本操作和数据库大致一样。

    1、文件存储

    先写一个简洁的登陆界面:

    布局文件activity_main.xml如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity">
    
        <EditText
            android:id="@+id/et_name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="用户名"/>
    
        <EditText
            android:id="@+id/et_pwd"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:hint="密码"/>
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="save"
            android:text="登录"/>
    
    </LinearLayout>

    MainActivity中基本代码如下,就是简单的声明控件和关联控件:

    public class MainActivity extends AppCompatActivity {
        //声明控件
        private EditText etName;
        private EditText etPwd;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
        private void initView() {
            //关联控件
            etName = findViewById(R.id.et_name);
            etPwd = findViewById(R.id.et_pwd);
        }
    }
    

    1.1、保存文件

    接下来实现一下点击事件save():

    public void save(View view) {
        //当用户名密码不为空时
        if(!TextUtils.isEmpty(etName.getText()) && !TextUtils.isEmpty(etPwd.getText())){
            FileOutputStream fos = null;
            try {
    
    
                //Context中的方法openFileOutput(),获取一个FileOutputStream对象
                fos = openFileOutput("data", Context.MODE_PRIVATE);
                String str = etName.getText().toString().trim() + "#" + etPwd.getText().toString().trim();
                fos.write(str.getBytes());
                Toast.makeText(getApplicationContext(), "保存成功", Toast.LENGTH_SHORT).show();
    
    
    
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }else{
            Toast.makeText(getApplicationContext(), "用户名或密码不能为空", Toast.LENGTH_SHORT).show();
        }
    }

    代码看起来有点乱,我在中间空了许多,主要代码就那些。利用Context中的openFileOutput(String name, int mode)方法,传入文件名和操作模式。获取一个FileOutputStream对象,然后在存储文件。我这里直接用#来拼接,这样是有问题的。这里只是为了方便。

    1.2、读取文件

    我们写一个方法load,用来读取文件:

    private void load() {
        try{
            //利用Context中的openFileInput()方法获取输入流
            FileInputStream data = openFileInput("data");
            BufferedReader reader = new BufferedReader(new InputStreamReader(data));
            String line = reader.readLine();
            String[] split = line.split("#");
            etName.setText(split[0]);
            etPwd.setText(split[1]);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    这里使用了Context中的openFileInput()方法,获取流,然后读取文件。因为文件流比较少用,我就讲到这里。

    2、SharedPreferences简称Sp

    Sp是一种用xml文件存储数据的方式,下面我具体讲一下。

    2.1、Sp的创建

    sp的创建方式有三种,第一种,之直接使用Context中的getSharedPreferences()方法,传入文件名和操作模式:

    private void initView(){
        //使用Context中的getSharedPreferences方法获取Sp对象
        SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);
    }

    第二种,使用Activity中的getPreferences()方法,传入一个操作模式,文件名自动以类名命名:

    SharedPreferences sp = getPreferences(Context.MODE_PRIVATE);

    第三种,使用PreferenceManager中的getDefaultPreferences()方法,传入一个Context参数:

    SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
    

    2.2、用Sp保存数据

    使用Editor对象存储,Editor中对应的数据类型有对应的方法。putString、putInt...

    private void initData(){
        //获取sp对象
        SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);
    
        //获取Editor对象
        SharedPreferences.Editor editor = sp.edit();
    
        //用Editor对象储存数据,传入键和值
        editor.putString("name", "zack");
    
        //最后调用apply()方法
        editor.apply();
        
    }

    2.3、获取Sp中的文件

    获取的时候直接用存储时的文件名创建一个Sp对象,就可以读取数据:

    private void initData(){
        //创建一个文件名为data的sp对象
        SharedPreferences sp = getSharedPreferences("data", Context.MODE_PRIVATE);
        
        //直接通过键获取数据,如果通过这个键找不到,就返回第二个参数中的值
        sp.getString("name", null);
        
    }

    3、SQLite数据库

    3.1、SQLite数据库的创建

    SQLite数据库的创建需要实现抽象类SQLiteOpenHelper,具体先定义一个类MySQLiteOpenHelper继承SQLiteOpenHelper:

    public class MySQLiteOpenHelper extends SQLiteOpenHelper {
    
        /**
         * @param context 上下文
         * @param name    数据库名称
         * @param factory   游标工场
         * @param version   版本
         */
        public MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
            super(context, name, factory, version);
        }
    
        /**
         *  数据库创建时调用这个方法
         * @param db    数据库对象
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
    
        }
    
        /**
         *  数据库升级的时候自动调用
         * @param db    数据库对象
         * @param oldVersion    老版本
         * @param newVersion    新版本
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    
        }
    }
    

    这里写了三个方法,其中onCreate()和onUpgrade()方法为SQLiteOpenHelper中的抽象方法。onCreate()在数据库创建时调用,只。而onUpgrade()在数据库升级时调用()(Version改变时)。所以onCreate()用于初始化表结构、onUpgrade()用于更新表结构。调用db.execSQL()方法,传入一个SQL语句就好了。

    3.2、获取数据库

    在Activity中创建MySQLiteOpenHelper的实例,然后通过这个实例获取数据库:

    private void initData(){
        //这里游标工场暂时用不到,设为null
        MySQLiteOpenHelper sqLiteOpenHelper = new MySQLiteOpenHelper(this, "db", null, 1);
        
        //通过MySQLiteOpenHelper对象获取数据。这两个方法暂时不区别
        //SQLiteDatabase db = sqLiteOpenHelper.getWritableDatabase();
        SQLiteDatabase db = sqLiteOpenHelper.getReadableDatabase();
    
    }

    3.3、数据库操作

    因为篇幅的关系,这里先不讲这么多了。SQLite中可以调用DataBase对象的execSQL()方法,通过SQL语句完成大多数操作。具体Android中特有的操作后面我再讲。大家有兴趣的话可以去了解一下郭林大神的LitePal,用来操作SQLite数据库方便很多。

    展开全文
  • android为数据存储提供了五种方式,有SharedPreferences、文件存储、SQLite数据库、ContentProvider、网络存储,对android数据存储方式感兴趣的朋友可以通过本文学习一下
  • 因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、文件存储、SQLite、 Content Provider。对这几种方式的不同和应用场景整理如下。 第一: 使用SharedPreferences存储数据  适用...

    作为一个完整的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分别是:SharePreference、文件存储、SQLite、 Content Provider。对这几种方式的不同和应用场景整理如下。

    第一种: 使用SharedPreferences存储数据

      适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型、基本类型的值。比如应用程序的各种配置信息(如是否打开音效、是否使用震动效果、小游戏的玩家积分等),解锁口 令密码等

      核心原理:保存基于XML文件存储的key-value键值对数据,通常用来存储一些简单的配置信息。通过DDMS的File Explorer面板,展开文件浏览树,很明显SharedPreferences数据总是存储在/data/data//shared_prefs目录下。SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过SharedPreferences.edit()获取的内部接口Editor对象实现。 SharedPreferences本身是一 个接口,程序无法直接创建SharedPreferences实例,只能通过Context提供的getSharedPreferences(String name, int mode)方法来获取SharedPreferences实例,该方法中name表示要操作的xml文件名,第二个参数具体如下:

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

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

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

      SharedPreferences对象与SQLite数据库相比,免去了创建数据库,创建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是SharedPreferences也有其自身缺陷,比如其职能存储boolean,int,float,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论SharedPreferences的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。

    第二种: 文件存储数据

      可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。

      写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。

      读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。

    第三种:SQLite存储数据

      SQLite Database数据库。Android对数据库的支持很好,它本身集成了SQLite数据库,每个应用都可以方便的使用它,或者更确切的说,Android完全依赖于SQLite数据库,它所有的系统数据和用到的结构化数据都存储在数据库中。 它具有以下优点: a. 效率出众,这是无可否认的 b. 十分适合存储结构化数据 c. 方便在不同的Activity,甚至不同的应用之间传递数据。  

    第四种:ContentProvider

      Android系统中能实现所有应用程序共享的一种数据存储方式,由于数据通常在各应用间的是互相私密的,所以此存储方式较少使用,但是其又是必不可少的一种存储方式。例如音频,视频,图片和通讯录,一般都可以采用此种方式进行存储。每个ContentProvider都会对外提供一个公共的URI(包装成Uri对象),如果应用程序有数据需要共享时,就需要使用ContentProvider为这些数据定义一个URI,然后其他的应用程序就通过Content Provider传入这个URI来对数据进行操作。

      总结一下,文件适用于存储一些简单的文本数据或者二进制数据,SharedPreferences适用于存储一些键值对,而数据库则适用于那些复杂的关系型数据。


    转自:http://blog.csdn.net/goodlixueyong/article/details/47041415

    Android学习交流群:523487222

    (如果您觉得有用,欢迎加入,一起学习进步)
    点击链接加入群【Android学习群】

    展开全文
  • Android的5种数据存储方式概述

    千次阅读 2016-07-22 11:25:48
    Android有5种数据存储方式,具体分类如下: 1.应用内数据存储方式,程序外不可访问:SharedPreferences存储  应用场景:存储应用配置信息和常用信息。    获取SharedPreferences的两种方式: (1) 调用Context...

    Android有5种数据存储方式,具体分类如下:

    1.应用内数据存储方式,程序外不可访问:SharedPreferences存储

       应用场景:存储应用配置信息和常用信息。

      获取SharedPreferences的两种方式:
    (1) 调用Context对象的getSharedPreferences()方法
    (2) 调用Activity对象的getPreferences()方法
    两种方式的区别:
    调用Context对象的getSharedPreferences()方法获得的SharedPreferences对象可以被同一应用程序下的其他组件共享.
    调用Activity对象的getPreferences()方法获得的SharedPreferences对象只能在该Activity中使用.

             详细的可以参加博文《 Android应用开发SharedPreferences存储数据的使用方法 以及与 getPreferences 、getDefaultSharedPreferences的区别》

    2.应用间数据访问:ContentProvider存储

        ContentProvider向我们提供了我们在应用程序之前共享数据的一种机制,而我们知道每一个应用程序都是运行在不同的应用程序的,数据和文件在不同应用程序之间达到数据的共享不是没有可能,而是显得比较复杂,而正好Android中的ContentProvider则达到了这一需求,比如有时候我们需要操作手机里的联系人,手机里的多媒体等一些信息,我们都可以用到这个ContentProvider来达到我们所需。

    3.程序外本地数据存储:非结构化数据--文件存储、结构化数据---SQLite数据库存储。

       非格式化数据--文件存储

       通过获取输入输出流将数据写入到某个文件

       文件存储
      (1)FileOutputStream out = context.openFileOutput(String filename,int mode); 以mode模式获得文件输出流
       (2)out.write(byte[]b);

       文件读取
       (1)FileInputStream in = context.openFileInput(String filename);   获得某个文件的文件流
       (2)int length = in.read(byte[]);

       格式化数据---SQLite数据库存储

       SQLite是比较小而功能比较全的关系型数据库,通过建表和增删查改实现数据的存储。

    4.网络存储数据

       由于手机内存的限制,和数据实时性的要求,手机APP大部分的数据来源还是来自于服务器,通过调动接口获取,本地只是作为缓存,辅助存储用。具体的存储和接口调用,需要和服务器端开发人员协商。



    展开全文
  • 文件存储是一较常用的方法,文件存储是Android中最基本的一种数据存储方式,与Java中的文件存储类似,都是通过I/O流的形式存储数据 Android中的文件存储分为内部存储和外部存储 内部存储:将应用程序中的数据以...

    一、文件存储

    文件存储是一种较常用的方法,文件存储是Android中最基本的一种数据存储方式,与Java中的文件存储类似,都是通过I/O流的形式存储数据

    Android中的文件存储分为内部存储和外部存储

    • 内部存储:将应用程序中的数据以文件方式存储到设备的内部,当内部存储创建的应用程序被卸载时,其内部存储文件也随之被删除
    • 外部存储:是将文件存储到一些外部设备上,例如SD卡或者设备内嵌外部存储的存储卡,属于永久性的存储方式

    内部存储示例: 

    package com.liu.fileio;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Button but1 = findViewById(R.id.but_1);
            Button but2 = findViewById(R.id.but_2);
    
            but1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    EditText saveCun = findViewById(R.id.et_save);
    
                    String fileName = "data.txt";
                    String content = saveCun.getText().toString();
    
                    FileOutputStream fos;
    
                    try {
                        fos = openFileOutput(fileName, MODE_APPEND);
                        fos.write(content.getBytes());
                        fos.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            but2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
    
                    EditText readDu = findViewById(R.id.et_read);
    
                    String content = "";
                    FileInputStream fis;
    
                    try {
                        fis = openFileInput("data.txt");
                        //available()方法可以在读写操作前先得知数据流里有多少个字节可以读取
                        byte[] buffer = new byte[fis.available()];
                        fis.read(buffer);
                        content = new String(buffer);
                        fis.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    String strread =  content;
                    readDu.setText(strread);
                }
            });
        }
    }
    

    界面: 

     openFileOutput 是Context的方法,如果你不是Activity就不能直接调用,而且MODE_PRIVATE要改为Context.MODE_PRIVATE。

    二、SharedPreferences

    是Android提供的用来存储一些简单的配置信息的一种机制。

    • SharedPreferences是Android平台上一个轻量级的存储类。
    • 用于存储应用程序的配置参数,如用户名、密码等。
    • 通过key/value(键值对)的形式将数据保存在XML文件中。
    • value值只能是float、int、long、boolean、String、StringSet类型数据。

    简单用法: 

        /**
         * 获取数据
         */
        private void read2() {
            SharedPreferences sp = getSharedPreferences("data2",MODE_PRIVATE);
            String data = sp.getString("name","不存在");//如果得不到值,则返回后面的不存在
           EditText et = findViewById(R.id.et_read2);
            et.setText(data);
        }
    
        /**
         * 存入数据
         */
        private void save2() {
            SharedPreferences sp = getSharedPreferences("data2",MODE_PRIVATE);
            //获取编译器
            SharedPreferences.Editor editor = sp.edit();
            EditText et = findViewById(R.id.et_save2);
            //存入数据
            editor.putString("name",et.getText().toString());
            editor.putInt("age",21);
            //修改提交
            editor.apply();
        }

    注意:

    • 获取数据的key值与存入数据的key值数据类型要一致,否则查找不到指定数据。
    • 保存SharedPreferences的key值时,使用静态变量保存,以免操作时写错,如private final String key=“itcast”。 

    3、SQLite:数据库是Android自带的一个轻量级数据库,支持基本SQL语法。

    • 支持ACID的关系型数据库管理系统。ACID也就是原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)
    • SQLite保存数据时,支持Null(零)、Integer(整数)、Real(浮点数字),Text(字符串文本)、Blob(二进制对象) 五种数据类型
    • 重点掌握execSQL()和rawQuery()方法。

        execSQL()方法可以执行insert、delete、update和CREATE TABLE之类有更改行为的SQL语句

        rawQuery()方法用于执行select语句

    基本用法:

    首先:

    package com.liu.fileio;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    import androidx.annotation.Nullable;
    
    public class SqlTest extends SQLiteOpenHelper {
    
        private static final String DBName = "MyTestSQL";    //声明一个数据库名
        private static final int VERISON = 1;           //声明一个数据库版本号
    
        public SqlTest(Context context) {
            super(context, DBName, null, VERISON);
        }
        /**
         * 对数据库表进行初始化,只会在第一次创建数据库表时执行,并且只执行一次
         * @param db
         */
        @Override
        public void onCreate(SQLiteDatabase db) {
            //创建表
            String sql = "create table demo(name varchar(20), age integer)";
            //执行SQl语句
            db.execSQL(sql);
        }
    
        /**
         *这个方法是进行数据版本的更新
         * @param db
         * @param oldVersion
         * @param newVersion
         */
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        }
    }
    

     之后:

    package com.liu.fileio;
    
    import android.content.Context;
    import android.database.Cursor;
    import android.database.sqlite.SQLiteDatabase;
    
    public class SqlDbTest {
        public SqlTest st;       //获取SQLiterDatabase类的实例
        public SQLiteDatabase db;//用这个类来进行增删改查
    
        public SqlDbTest(Context context){
            st = new SqlTest(context);
            db = st.getWritableDatabase();     //获取SQLiterDatabase类的实例
        }
    
        public void InsetrDataforSQL(User user){
            String sql = "insert into demo values(?,?)";
            db.execSQL(sql,new Object[]{user.getName(),user.getAge()});
        }
    
        public User SelectData(){
            User user = new User();
            Cursor cs = db.rawQuery("select * from demo",null);//cursor:光标
            while(cs.moveToNext()){
                user.setName(cs.getString(cs.getColumnIndex("name")));
                user.setAge(cs.getInt(cs.getColumnIndex("age")));
            }
            return user;
        }
        public void CloseDb(){
            db.close();
        }
    }
    

    使用:

       private void read3() {
            SqlDbTest sdt = new SqlDbTest(this);
            User user = sdt.SelectData();
    
            EditText et = findViewById(R.id.et_read3);
            et.setText(user.getName().toString());
            sdt.CloseDb();
        }
    
        private void save3() {
            EditText et = findViewById(R.id.et_save3);
            User user = new User(et.getText().toString(),22);
            SqlDbTest sdt = new SqlDbTest(this);
            sdt.InsetrDataforSQL(user);
            sdt.CloseDb();
        }

     

    4、ContentProvider:是Android四大组件之一,可以将自己的数据共享给其他应用程序。
    5、网络存储:是通过网络提供的存储空间来存储/获取数据信息。

     

     

     

    展开全文
  • Android应用五种数据存储方式

    千次阅读 2018-07-07 20:33:43
    Android的五种数据存储方式文件存储SharedPreferencesSQLite数据库存储ContentProvider网络存储一、文件存储默认存储路径:/data/data/&lt;PackageName&gt;/files文件操作模式:MODE_PRIVATE(默认):覆盖...
  • Android中常用的五种数据存储方式
  • android种数据存储之使用SharedPreferences存储数据android种数据存储之使用SharedPreferences存储数据android种数据存储之使用SharedPreferences存储数据android种数据存储之使用SharedPreferences存储...
  • 使用键值对的方式存储数据2.通常用于:保存用户的偏好设置、选择是否保存密码、记录文档阅读的位置等3.实现方式(写入):a).获取SharedPreferences对象 getSharedPreferences("文件名",MODE_PRIVATE/MODE_MULTI_...
  • Android,可供选择的存储方式包括了SharedPreferences、文件存储、SQLite数据库存储方式、内容提供器方式(Content Provider)以及网络方式 5,具体如下:  1-> SharedPreferences是Android提供的一配置文件...
  • android 三种存储方式

    2019-01-07 10:26:19
    自己整理的三种android存储方式,dbflow 数据库存储,shareperfer 存储,内外存文件的存储
  • 现将Android数据存储做下总结,在以后的开发过程中根据需求选择合适的数据存储方式。 Android提供了5种方式存储数据:  1. 使用SharedPreferences存储数据;  2. 文件存储数据;  3. SQLite数据库...
  • Android中的5种数据存储方式 Android中的5种数据存储方式 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,分别是: 1 使用SharedPreferences存储数据; 2 ...
  • android数据存储方式大全android数据存储方式大全android数据存储方式大全android数据存储方式大全android数据存储方式大全android数据存储方式大全
  • Android 常见数据存储方式有以下三种:1.使用SharedPreferences存储数据:其本质就是一个xml文件,可以保存字符串、布尔值、基础数据、集合等数据。常用于存储较简单的参数设置。2.File文件存储数据:即常说的文件(I...
  • Android实现永久存储数据三种方式(Kotlin实现) 1.通过文件的方式 1.1 适用范围 一些简单的文本数据 1.2 简单实例 作用:实现文本框可以在重新启动之后仍然保留上一次推出时候的数据 1.2.1 布局代码 <?xml ...
  • 安卓的5种数据存储方式主要有 SharedPreferences -

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 265,480
精华内容 106,192
关键字:

安卓三种数据存储方式