Android中,我想在退出程序时,保存住当前的状态,当再次启动时,能回到退出时的状态,该怎么做呢?

Android中,我想在退出程序时,保存住当前的状态,当再次启动时,能回到退出时的状态,该怎么做呢?,第1张

Android中保存当前的状态通常是通过SharedPreferences对象来保存的。

SharedPreferences是Android平团裤台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Long长 整形、Int整形、String字符串型的保存。

SharedPreferences类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问,android123提示最终是以xml方式来保存,整体效率来看不是特别的高,对于常规的轻量级而言比SQLite要好不少,如果真的存储量不大可以考虑自己定芹裤义文件格式。xml 处理时Dalvik会通过自带底层的本地XML Parser解析,比如XMLpull方式,这样对于内存资源占用比较好。

它的本质是塌首简基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在/data/data/<>/shared_prefs目录下。

SharedPreferences对象本身只能获取数据而不支持存储和修改,存储修改是通过Editor对象实现。

实现SharedPreferences存储的步骤如下:

1、根据Context获取SharedPreferences对象

2、利用edit()方法获取Editor对象。

3、通过Editor对象存储key-value键值对数据。

4、通过commit()方法提交数据。

理想的情况是不需要,实际情况是往往需要,这与国情无关,是 android 为自由本身所付出的代价。

一般来说,界面返回了就只剩下静态对象了。如果一个应用只有静态对象,没有上下文,无法执行 android 系统的大多数功能,因此不会对系统造成什么影响,没有必要把这种状态下的应用进一步干掉。但 android 是个挺多元化的系统,很多问题不容易解决。

A:如果应用注册了服务,这个服务作为一个上下文,可以在界面退出后仍然存在,而服务是可能在后台继续运行的,这样的应用需要一个明确的退出功能。典型的例子有:

1,微信,QQ,米聊一类的需要长期联网的应用,退出之后将断网,不退出将一直消耗流量(以及电量,这会导致待机时间缩短)

2,可进行后台音乐播放类应用,退出之后将停止播放,不退出将一直持续播放音乐直到电量耗光。

B:还有一类应用一般也需要退出功能,那就是多界面的应用。这类应用有很多个界面,如果按返回键,可能需要按十几次才能退出,所以设立一个退出功能更方便用户。这类典型应用有:

1,文件管理器类应用。一般可以进入几十层文件夹之亩肆类。一层一层返回很麻烦。

2,浏览器类应用,进入很多页面,一次性返回,用户理解为浏览器的页面全部都清干净了。

C:独占底层资源,需要资源释放类的应用也可能会需要明确的退出功能。这类的典型应用有:

1,

用底层C接口实现的游戏,比如有的游戏使用了底层的声音引擎,如果没有正常退出,则可能导致整个设备其他应用的声音不可用,有时会导致必须重新启动设备才

能恢复声音正常。——类似的很多诸如此类在界面内独占系统底层资源的,都拦耐握可能需要明确的退出才能使系统恢复到正常状态,这一定程度上是程序本身的设计问

题,良好的设计可以避免它(需要程序员付出额外的努力),但缺乏有效的审核机制使得很多需要显式退出才能正常释放硬件资源的程序可以被发布跟流传。

有些应用其实不太需要退出功能:

1,后台流氓类应用,此类应用其实根本不需要常驻后台,但他们仍然会保留一个服务在后台,以便实现他们自己的商业目的,此类应用提供退出功能意义不那么大,如果用简庆户不信任它,会自己从系统中干掉它,它自己提供的退出功能是否真的退出了,用户也未必相信。

2,单界面应用,此类应用,界面退出就够了,进程可以保留,一般并不消耗CPU。一些所谓内存清理软件通常只能清理掉这类应用的进程,但实际上,除非你的设备内存极其吃紧,否则清理他们没有任何好处,反而对系统流畅性有害。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12320811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存