Android实现手机内存存储功能

简介: Android实现手机内存存储功能

效果图

点击存入,点击获取 吐司结果

写入数据

读取数据

源码

AddDataTestActivity

package com.gaojc.activity;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

import com.gaojc.text.R;
import com.gaojc.text.Utils.LogUtil;
import com.gaojc.text.Utils.SharedPreferencesUtil;

public class AddDataTestActivity extends AppCompatActivity {

    // 需要存入的数据(这里为了方便,所以使用假数据)
    private final static String CODE = "ABC666";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_data_test);


        /**
         * 存入数据
         */
        findViewById(R.id.saveData).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SharedPreferencesUtil.getInstance(AddDataTestActivity.this).putString("code",CODE);
            }
        });


        /**
         * 获取数据
         */
        findViewById(R.id.getData).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String code = SharedPreferencesUtil.getInstance(AddDataTestActivity.this).getString("code");
                Toast.makeText(AddDataTestActivity.this,"code:" + code,Toast.LENGTH_LONG).show();
                LogUtil.e("code:" + code);
            }
        });

    }
}

activity_add_data_test.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.gaojc.activity.AddDataTestActivity">

    <Button
        android:id="@+id/saveData"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="存入"
        android:layout_gravity="left"/>

    <Button
        android:id="@+id/getData"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取"
        android:layout_gravity="right"/>

</FrameLayout>

SharedPreferencesUtil

package com.gaojc.text.Utils;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;

public class SharedPreferencesUtil {

    private static SharedPreferences mSharedPreferences; //保存数据接口
    private static SharedPreferences.Editor mEditor; //Editor对象用来写入数据
    private static SharedPreferencesUtil mSharedPreferencesUtil;


    // 构造方法
    public SharedPreferencesUtil(Context context) {
        /**
         * context.getSharedPreferences:获取SharedPreferences实例
         *      Context.MODE_PRIVATE:指定该SharedPreferences数据只能被本应用程序读写
         */
        mSharedPreferences = context.getSharedPreferences("config", Context.MODE_PRIVATE);
        // 获取Editor对象
        mEditor = mSharedPreferences.edit();
    }

    // 单例模式
    public static SharedPreferencesUtil getInstance(Context context) {
        if (mSharedPreferencesUtil == null) {
            mSharedPreferencesUtil = new SharedPreferencesUtil(context);
        }
        return mSharedPreferencesUtil;
    }

    // 存入数据
    public void putString(String key, String value) {
        if (TextUtils.isEmpty(value)) {
            value = "";
        }
        // apply():提交
        mEditor.putString(key, value).apply();
    }

    // 获取数据
    public String getString(String key) {
        return mSharedPreferences.getString(key, "");
    }
}

Log打印日志类(LogUtil)

---------------------------------

SharedPreferences.Editor的commit()方法和apply()方法的区别

Android存储(SharedPreferences.Editor)commit()和apply()区别:

commit和apply虽然都是原子性操作,但是原子的操作不同,commit是原子提交到数据库,从提交数据到存在磁盘中都是同步过程;

而apply方法的原子操作是原子提交到内存中,而非数据库,之后再异步提交数据到数据库中。

commit提交是同步过程,效率会比apply异步提交的速度慢,有返回值;apply没有返回值,无法知道存储是否失败。

在不关心提交结果是否成功的情况下,优先考虑apply方法。

---------------------------------

目录
相关文章
|
1月前
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
|
2月前
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
92 16
|
2月前
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
186 4
|
2月前
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
2月前
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
108 3
|
3月前
|
安全 Android开发 iOS开发
Android vs iOS:探索移动操作系统的设计与功能差异###
【10月更文挑战第20天】 本文深入分析了Android和iOS两个主流移动操作系统在设计哲学、用户体验、技术架构等方面的显著差异。通过对比,揭示了这两种系统各自的独特优势与局限性,并探讨了它们如何塑造了我们的数字生活方式。无论你是开发者还是普通用户,理解这些差异都有助于更好地选择和使用你的移动设备。 ###
66 3
|
3月前
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
163 1
|
3月前
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。
|
3月前
|
Android开发 iOS开发 UED
安卓与iOS的较量:谁才是智能手机市场的王者?
本文将深入探讨安卓和iOS两大智能手机操作系统之间的竞争关系,分析它们各自的优势和劣势。通过对比两者在市场份额、用户体验、应用生态等方面的表现,我们将揭示出谁才是真正的市场领导者。无论你是安卓粉丝还是iOS忠实用户,这篇文章都将为你提供一些有趣的观点和见解。