Android 持久状态

当你编辑某Text视图时可能会打断当前编辑切换到另外的活动中,如果要持久你的编辑状态那么应该在Activity.onPause()里面做文章, 例如:

@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor editor = getPreferences(0).edit();
editor.putString("text", mSavedEditText.getText().toString());
editor.putInt("selection-start", mSavedEditText.getSelectionStart());
editor.putInt("selection-end", mSavedEditText.getSelectionEnd());
editor.commit();
}


[img]http://sunney2012.iteye.com/upload/picture/pic/97969/5f78d3f4-45c1-371d-8847-01e06dd2bca9.png[/img]

当试图重新获得焦点时 需在Activity.onResume中操作 如下:
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = getPreferences(0);
String restoredText = prefs.getString("text", null);
if (restoredText != null) {
mSavedEditText.setText(restoredText, TextView.BufferType.EDITABLE);

int selectionStart = prefs.getInt("selection-start", -1);
int selectionEnd = prefs.getInt("selection-end", -1);
if (selectionStart != -1 && selectionEnd != -1) {
mSavedEditText.setSelection(selectionStart, selectionEnd);
}
}
}
Android应用状态持久化与设置界面设计 本文深入探讨了在Android应用开发中,如何通过SharedPreferences实现应用状态的持久化存储以及如何设计用户可自定义的应用设置界面。文章详细解析了在应用实例状态变化时,如何正确地保存和恢复数据,同时介绍了如何在应用中创建设置界面,让用户能够根据个人喜好调整应用配置。 阅读详情

相关推荐

Android 11分屏开发实战:窗口调度、焦点管理与状态持久化

Android分屏并非简单的UI适配,而是基于系统级窗口管理的运行时协议。其核心原理在于WindowManagerService对多窗口的尺寸协商、焦点独占与资源冻结三大调度机制;技术价值体现在提升多任务效率、支撑折叠屏与大屏生态;典型应用场景包括教育类课设、毕设答辩、企业级多视图工具开发。本文聚焦Android 11(API 30)真实落地门槛,深入解析onMultiWindowModeChanged窗口尺寸监听与onTopResumedActivityChanged焦点状态同步两大关键热词,提供可编译、

weixin_26918763的博客 218

android edittext操作

1.获取光标选中的文字 EditText view = (EditText)findViewById(R.id.edt); int start = view.getSelectionStart(); int end = view.getSelectionEnd();        //由于选择的位置和你开始选择文字的顺序有关,所以最好重新判断整理一下顺序,免得

wangjia55的专栏 4318

Android计算器实战:ViewModel+SavedStateHandle状态持久化教学实现

Android计算器是移动开发入门的经典项目,其核心在于理解Activity生命周期、UI与业务逻辑分离、以及状态持久化机制。本文围绕Android架构组件展开,重点解析ViewModel如何解耦界面与数据,SavedStateHandle如何在屏幕旋转、进程回收等场景下可靠保存计算栈,避免常见闪退与数据丢失问题。技术价值体现在提升应用健壮性、强化学生对Android生命周期意识的具象认知,并支撑K12编程教学中可演示、可延展、可评估的工程实践目标。适用于高校移动开发课程设计、实训项目交付及初学者进阶学习。

weixin_27180827的博客 253

Android光标自动定位,Android EditText光标定位

Selection 这个完全是一个工具类, 是关于区间选取的工具类, 自有的方法都是静态的. 来了兴致就把所有方法都测试了一下, 又要熬夜了. 测试是在一个继承EditText 的子类 onTouchEvent 方法里面进行的. 算是一个总结了.text 实参是 getEditableText(), layout 实参是 getLayout()选中区域的方法:Selection.extendDo...

weixin_40001805的博客 826

Android自定义多选Dialog:状态持久化与生命周期管理

Android多选对话框是设置页、权限管理、筛选配置等场景的基础交互组件,其核心在于选项状态的准确维护与跨生命周期的一致性。原生AlertDialog.setMultiChoiceItems()因状态不可控、UI不可定制、生命周期脱钩而难以满足真实业务需求。本文围绕ListView+CheckBox组合方案,深入解析SparseBooleanArray状态管理、View复用安全机制、onDismiss状态同步等关键技术原理,提供可复用、支持全选/反选/禁用项、适配Material主题的工程级实现。适用于An

weixin_29188043的博客 287

Android通过textview设置状态

通过textview设置状态选择

input中selectionStart和selectionEnd获取选中区域的起始位置

效果图 <input type="text" name="" id="input" value="选择区域" onclick="fn()"/> var inputs = document.getElementById("input"); function fn(){ var text = "新增" console.log("选中区域左边界:" + inputs.selectionStart) console.log("选中区域右边界:" + inputs.selectio

weixin_38673922的博客 5958

ZYNQ Linux下UIO中断配置避坑实录:从设备树修改到用户层测试(Vivado 2018.2)

本文详细解析了ZYNQ Linux下UIO中断配置的全流程,从设备树修改到用户层测试,特别针对Vivado 2018.2环境中的常见陷阱提供解决方案。内容涵盖中断号配置规则、用户空间中断处理程序编写以及性能优化技巧,帮助开发者高效实现硬件中断的用户空间控制。

weixin_31854867的博客 333

android EditText获取光标位置并插入字符删除字符

1.获取光标位置 int index = editText.getSelectionStart(); 2.在光标处插入字符 int index = editText.getSelectionStart(); Editable editable = editText.getText(); editable.insert(index, "aaaa"); 3.删除光标前字符 int i

Central-Perk的专栏 3万+

告别Python依赖!用C++编译PaddleOCR打造轻量级本地OCR工具(附模型选择与性能对比)

本文详细介绍了如何将PaddleOCR从Python迁移到C++平台,打造高性能、低资源占用的本地OCR工具。通过对比Python和C++实现的性能差异,展示了C++在冷启动时间、内存占用和部署便捷性上的显著优势。文章还提供了模型选择、编译配置和优化技巧等实用指南,帮助开发者轻松构建轻量级OCR解决方案。

weixin_28717467的博客 256

SAP PCC成本收集器实战:从配置到结算的完整流程解析

本文详细解析了SAP PCC成本收集器从配置到结算的完整流程,特别适用于重复制造行业。通过实战案例和配置要点,帮助用户掌握物料分类账管理、成本中心费用归集及差异分析等核心功能,提升企业生产成本控制效率。

weixin_29251567的博客 895

ArkUI-X/arkui_for_android状态管理:组件状态持久化

在移动应用开发中,状态管理是一个至关重要的环节。当应用被切换到后台、设备旋转或配置变更时,如何保持组件的状态不丢失,直接影响用户体验。ArkUI-X作为华为推出的跨平台UI框架,在Android平台的适配层`arkui_for_android`中提供了完善的状态持久化机制。本文将深入解析其实现原理和使用方法。 ## 状态持久化的核心挑战 在Android平台上,状态持久化面临的主要挑战包括: ...

gitblog_00486的博客 860

告别商业软件?实测用gnina(CNN打分版)做分子对接:从安装到跑通第一个案例

本文详细介绍了基于卷积神经网络(CNN)的开源分子对接工具gnina的安装与实战应用。从环境配置、编译安装到运行第一个COVID-19主蛋白酶抑制剂对接案例,全面解析了这款替代商业软件的强大功能,特别适合预算有限的研究团队进行药物发现和虚拟筛选。

weixin_42522320的博客 255

android当前状态,“持久状态”与“当前状态”

您不需要在onPause中存储用户首选项,因为正如您所说,框架会为您执行此操作。要区分持久数据与状态信息,请考虑文本编辑器应用程序。持久数据假设用户输入了几个单词,然后退出应用程序。 用户没有明确地告诉我们将这些数据保存到文件中,但是当它们返回时,确保存储这些数据肯定会很好。 这是持久性数据,您希望将其存储在onPause()中。州数据同样,假设您有2个选项卡和一个跟踪当前选中的选项卡的varia...

weixin_39687301的博客 332

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用

CTF逆向-[GWCTF 2019]babyvm-WP-虚机模拟流程反向编码和z3约束求解器解方程工具的使用 来源:https://buuoj.cn/ 内容: 附件:https://pan.baidu.com/s/1FKkXN6JDI0QkGw-UE2crNA?pwd=grb0 提取码:grb0 答案:Y0u_hav3_r3v3rs3_1t! 总体思路 发现是虚机模拟 形成每个指令的逆向 找到加密值位置(有可能不止一个位置,该题就给了一个误导的) 找到命令执行的流程(也是不止一个) 逆向编写反向加密得到f

serfend's blog 977

写出GD32L233/235在读写flash的区别(用于OTA功能)

在单片机里面表示 大概是 address += sizeof(uint32_t) address += sizeof(uint64_t)1.说到OTA功能,实际上 往flash 指定区域写 数据, 拷贝数据,然后 跳转, 必要时 注意单片机的偏移量。在写本文时,L233支持单字写入,而L235只有双字写入. 一个写入地址+4 一个写入地址+8。这个是 自己写的擦除一页 数据,当然可以参考 提供的demo去实现,看自己需求。接下来是 读取 双字,也就是在L235上的读取。

teleger的博客 907

解决Capacitor应用状态丢失:Android端数据持久化终极指南

Capacitor是一个强大的跨平台原生渐进式Web应用框架,让开发者能够使用Web技术构建iOS、Android和Web应用。然而,应用状态丢失是开发过程中常见的挑战,尤其是在Android平台上。本文将详细介绍如何在Capacitor应用中实现可靠的数据持久化方案,确保用户数据不会因应用重启或配置变更而丢失。 ## 数据持久化的重要性与挑战 在移动应用开发中,数据持久化是确保用户体验连贯性

gitblog_00884的博客 377

【华为OD机试真题】282、求满足条件的最长子串的长度 | 机试真题+思路参考+代码分析 (C++、Java、Py、C语言、JS)

题目描述 >给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度,字符串本身是其最长的子串,子串要求: >  1、只包含1个字母(a~ z,A~Z), 其余必须是数字; 2、字母可以在子 串中的任意位置; >  如果找不到满足要求的子串,如全是字母或全是数字,则返回-1

KJ.JK 1万+

ExoPlayer智能播放:构建Android媒体播放状态持久化系统

在当今移动媒体应用竞争激烈的环境中,用户体验已成为决定应用成败的关键因素。Android媒体播放的智能化水平直接影响着用户留存率和满意度。如何构建一个能够智能记忆播放状态、实现无缝续播的播放系统,是每个开发者都需要面对的技术挑战。 ## 突破传统播放体验的技术架构 传统播放器往往只关注基础的播放功能,而忽略了用户在使用过程中的连续性需求。现代媒体应用需要实现从"被动播放"到"主动记忆"的转变,

gitblog_01089的博客 656

【AI黑话日日新】什么是AI Infra?

是支撑AI模型开发、训练、推理、部署与规模化运营的,是连接底层算力与上层AI应用的“数字基建”。没有高效的AI Infra,大模型训练、推理与落地都无法高效实现。

专注:太空算力、AI infra、异构调度、大模型成本工程 1100

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android 15 持久性通知:如何创建药丸形状的应用状态通知?

安卓15系统新增"药丸形状持久性通知"功能,采用圆润长条形设计,持续显示应用状态(如音乐播放、下载进度等)。用户需升级安卓15系统并开启应用通知权限即可使用,各品牌手机设置略有差异。开发者可通过API创建自定义药丸通知,支持实时更新内容。该功能借鉴苹果"灵动岛"理念,提供更直观的状态显示体验,遇到问题时可检查权限设置或代码实现。

AirDroid_cn的博客 425

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

AI Agent 迁移 Android 踩坑实录:后台保活与状态持久化

在移动端部署 AI Agent 时,后台任务调度、前台服务存活、长连接稳定性与进程状态管理是决定可用性的关键。Android 的电源管理与后台限制模型,使 Agent 的持续在线、实时响应和状态连续需求面临根本性冲突。理解 WorkManager 的延迟执行机制、Foreground Service 的通知合法性凭证、Doze 模式下的网络假死以及进程随时可杀的特性,是构建高存活率移动端 Agent 的基础。这些技术点广泛适用于即时通讯、消息推送、后台同步等场景。本文围绕 AI Agent 在 Androi

weixin_30162121的博客 243

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Android ViewModel State:在配置变更中持久化并响应式驱动 UI 状态

ViewModel State 指的是保存在 ViewModel 类中的、能够跨越配置变更(如屏幕旋转)而存续的数据。本文围绕 Android 学习路线图中 [viewmodel-state](https://link.gitcode.com/i/9613f2b4da21219f06fb6a4b376c0436) 这一核心主题展开,讲解 ViewModel 状态为何能抵御 Activity/Fra

gitblog_00811的博客 198

Android练手项目:用‘零食很忙’夯实UI状态管理与本地数据持久化

在Android开发入门中,UI状态同步与本地数据持久化是两大核心能力。理解Activity生命周期如何影响数据一致性,掌握RecyclerView+DiffUtil实现高效列表更新,熟悉Room数据库的编译期校验与关系映射,是构建可靠App的基础。这些能力直接支撑电商类应用的关键场景——如商品库存实时扣减、购物车多端状态联动、订单表单强校验与支付后状态跃迁。‘零食很忙’项目以高度聚焦的业务边界(SKU集中、价格带窄、复购率高),将抽象概念落地为可调试、可验证、可演进的工程实践,成为训练UI-数据双向绑定直

weixin_26742753的博客 151

Android Jetpack Compose之状态持久化与恢复

我们都知道remember可以缓存创建状态,避免因为重组而丢失。使用remember缓存的状态虽然可以跨越重组,但是不能跨Activity或者跨进程。比如横竖屏切换等ConfigiurationChanged事件发生时,假设没有重写对应的onConfigurationChanged函数,Activity就会被销毁重建,导致remember保存的状态丢失。为了解决这个问题,Compose提供了rememberSavable解决这个问题

知识应该共享,创造才应收费 1216
上一篇: Android Intent用法汇总
下一篇: Android 反编译
sunney2012
博客等级 码龄16年 1粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值