千家信息网

如何使用Android实现关机后数据不会丢失问题

发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,这篇文章将为大家详细讲解有关如何使用Android实现关机后数据不会丢失问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。要实现关机后数据也不会丢失,需要使用到 A
千家信息网最后更新 2025年11月09日如何使用Android实现关机后数据不会丢失问题

这篇文章将为大家详细讲解有关如何使用Android实现关机后数据不会丢失问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

要实现关机后数据也不会丢失,需要使用到 AndroidViewModel,SaveStateHandle 和 SharePreferences 要达到的目的就是将数据保存成这个亚子

就不会出现app在异常闪退或者关机后数据的丢失了注意在使用SaveStateHandle和binding的时候需要在gradle里面设置一波

数据类

package com.example.applicationtest04;import android.app.Application;import android.content.Context;import android.content.SharedPreferences;import androidx.annotation.NonNull;import androidx.lifecycle.AndroidViewModel;import androidx.lifecycle.LiveData;import androidx.lifecycle.MutableLiveData;import androidx.lifecycle.SavedStateHandle;public class MyVIewModel extends AndroidViewModel { SavedStateHandle handle; //声明savedstatehandle 类型 String shpName = getApplication().getResources().getString(R.string.shp_name); String key = getApplication().getResources().getString(R.string.key); public MyVIewModel(@NonNull Application application, SavedStateHandle handle) { super(application); this.handle = handle; if(!handle.contains(key)){ load(); } } public LiveData getNumber(){ return handle.getLiveData(key); } public void load(){ SharedPreferences shp = getApplication().getSharedPreferences(shpName, Context.MODE_PRIVATE); int x = shp.getInt(key,0); handle.set(key,x); } public void save(){ SharedPreferences shp = getApplication().getSharedPreferences(shpName,Context.MODE_PRIVATE); SharedPreferences.Editor editor = shp.edit(); editor.putInt(key,getNumber().getValue()); editor.apply(); } public void add(int x){ handle.set(key,getNumber().getValue()+x); }}//这段代码里面有几个重要的点就是在使用handle的时候要注意使用的数据是liveData

Mainactive类

package com.example.applicationtest04;import androidx.appcompat.app.AppCompatActivity;import androidx.databinding.DataBindingUtil;import androidx.lifecycle.SavedStateVMFactory;import androidx.lifecycle.ViewModelProvider;import androidx.lifecycle.ViewModelProviders;import android.os.Bundle;import com.example.applicationtest04.databinding.ActivityMainBinding;public class MainActivity extends AppCompatActivity { MyVIewModel myVIewModel; ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = DataBindingUtil.setContentView(this,R.layout.activity_main); this.myVIewModel = ViewModelProviders.of(this,new SavedStateVMFactory(this)).get(MyVIewModel.class); binding.setData(myVIewModel); binding.setLifecycleOwner(this); } @Override protected void onPause() { super.onPause(); myVIewModel.save(); }}//这段代码的重点就是使用onPause这个声明周期的函数来调用save()函数

布局xml

数据 就是 篇文章 问题 代码 函数 时候 更多 不错 实用 重要 内容 周期 布局 文章 目的 知识 类型 重点 一波 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 已进入数据库怎么查看数据库密码 终端进入hive数据库 企业大学软件开发多少钱 网络技术人员职业描述 网络安全问题毛概 原神b服服务器互通吗 国内连不上国外代理服务器 写出创建数据库的命令 教育系统网络安全宣传活动 北京网络技术咨询联系人 微信软件开发人员 网络安全主要攻击方式 虚拟主机关闭数据库严格模式 饥荒专用服务器开不了mod 数据库传输数据方式 数据库中的直方图是什么 南京有趣互联网科技 共同维护网络安全和秩序 十堰服务软件开发包括哪些 贵州有多少大数据服务器虚拟主机 网络安全时序数据库 单位2021网络安全工作报告 广州软件开发会议 无线软件开发维修电话 辽宁通信软件开发服务价格优惠 农安智能网络技术推荐咨询 青岛鼎盛网络技术有限公司 网络技术工程师英文 亚信网络安全密码 软件开发创业计划书财务计划
0