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方法。

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

目录
相关文章
|
9月前
|
Android开发 数据安全/隐私保护
安卓手机修改设备id, 安卓硬改一键新机,手机机型修改(伪装)
提供了完整的设备信息修改功能,包含设备模板配置、基础信息修改、网络信息修改、模拟器检测绕
|
9月前
|
存储 人工智能 文字识别
三款安卓手机word编辑器下载,Microsoft Word,wps office,Word手机版,手机word编辑查看阅读器,PDF转换器apk下载
WPS Office是一款功能强大的办公软件,支持文档编辑、表格处理和演示文稿制作,兼容多种格式并提供丰富的云服务。它具备低内存占用、快速运行的特点,支持跨设备同步与多人协作,内置海量模板及AI辅助功能,如智能写作和PPT自动生成。此外,还可扫描文件、编辑PDF并转换为其他格式,极大提升办公效率,适合手机用户便捷操作。
1003 1
|
11月前
|
缓存 编解码 Android开发
Android内存优化之图片优化
本文主要探讨Android开发中的图片优化问题,包括图片优化的重要性、OOM错误的成因及解决方法、Android支持的图片格式及其特点。同时介绍了图片储存优化的三种方式:尺寸优化、质量压缩和内存重用,并详细讲解了相关的实现方法与属性。此外,还分析了图片加载优化策略,如异步加载、缓存机制、懒加载等,并结合多级缓存流程提升性能。最后对比了几大主流图片加载框架(Universal ImageLoader、Picasso、Glide、Fresco)的特点与适用场景,重点推荐Fresco在处理大图、动图时的优异表现。这些内容为开发者提供了全面的图片优化解决方案。
434 1
|
NoSQL 应用服务中间件 PHP
布谷一对一直播源码android版环境配置流程及功能明细
部署需基于 CentOS 7.9 系统,硬盘不低于 40G,使用宝塔面板安装环境,包括 PHP 7.3(含 Redis、Fileinfo 扩展)、Nginx、MySQL 5.6、Redis 和最新 Composer。Swoole 扩展需按步骤配置。2021.08.05 后部署需将站点目录设为 public 并用 ThinkPHP 伪静态。开发环境建议 Windows 操作系统与最新 Android Studio,基础配置涉及 APP 名称修改、接口域名更换、包名调整及第三方登录分享(如 QQ、微信)的配置,同时需完成阿里云与腾讯云相关设置。
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
1081 38
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
680 16
|
Android开发 数据安全/隐私保护 虚拟化
安卓手机远程连接登录Windows服务器教程
安卓手机远程连接登录Windows服务器教程
3646 5
|
Android开发 开发者
Android性能优化——内存管理的艺术
Android性能优化——内存管理的艺术
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
471 3