工具类 对于一个项目来说,项目中将多次用到sharedPreferences共享参数,去存储用户的登录状态或清除登录状态,“我”的界面也要求用到读取用户姓名的方法,所以我们干脆把这三个方法都扔到AnalysisUtils...spPsw; 设置密保和找回密码 主要功能代码: /** * 保存初始化密码 **/ private void savePsw(String name, String...**/ private String readSecurity(String name){ SharedPreferences sharedPreferences=getSharedPreferences...return security; } /** * 保存密保名字 **/ private void saveSecurity(String validateName...", Toast.LENGTH_SHORT).show(); //保存到 saveSecurity(validateName);
存储 SharedPregerences是一种轻量级的数据存储方式,一般用来存储一些简单数据,如应用程序的配置信息等。...它的本质基于key-value键值对的方式存储,存储类型为int,long,String,float和boolean。...实现SharedPreferences存储的步骤:调用getSharedPreferences()方法,在获取该方法有两个参数: getSharedPreferences(String name, int...图片 Android设置修改密码,设置密保,和找回密码: 学习目标 掌握修改密码功能的开发,和实现用户密码的修改; 掌握设置密保的功能开发,通过密保我们可以找回用户的密码,来保证用户的安全。...对于一个项目来说,项目中将多次用到sharedPreferences共享参数,去存储用户的登录状态或清除登录状态,“我”的界面也要求用到读取用户姓名的方法,所以我们干脆把这三个方法都扔到AnalysisUtils
在Kotlin中,扩展函数是一种非常有用的功能,可以让我们向现有的类添加新的功能,而无需修改类的源代码。在本文中,我们将探讨Kotlin扩展函数的原理和运用,以及如何在Android开发中使用它们。...例如,我们可以向Kotlin中的String类添加一个新的函数,用于反转字符串: fun String.reverse(): String { return this.reversed() }...例如,我们可以像下面这样定义一个扩展函数,用于存储和读取Boolean类型的数据: fun SharedPreferences.putBoolean(key: String, value: Boolean...) { edit().putBoolean(key, value).apply() } fun SharedPreferences.getBoolean(key: String, defaultValue...例如,我们可以像下面这样定义一个扩展函数,用于在RecyclerView中添加和移除数据: fun RecyclerView.addItems(items: List, adapter:
key, String value) { SharedPreferences.Editor editor = mShared.edit(); editor.putString...外部在使用该工具类之时,可在Activity代码中声明来自于Preference的委托属性,委托属性一旦声明,则它的初始值便是从共享参数读取的数值;后续代码若给委托属性赋值,则立即触发写入动作,把该属性的最新值保存到共享参数中...下面简单说明一下T、Any和*三者之间的区别: 1、T是抽象的泛型,在模板类中用来占位子,外部调用模板类时才能确定T的具体类型; 2、Any是Kotlin的基本类型,所有Kotlin类都从Any派生而来...联想到Kotlin还有类似的关键字名叫lateinit,意思是延迟初始化,加上lazy可以归纳出Kotlin变量的三种初始化操作,具体说明如下: 1、声明时赋值:这是最常见的变量初始化,在声明某个变量时...综上所述,在模板类Preference的编码过程中,联合运用了Kotlin的多项黑科技,方才实现了优于Java的共享参数操作方式。 点此查看Kotlin入门教程的完整目录
Kotlin中的委托分为两种——类委托与属性委托,其中属性委托,是Kotlin非常强大的一个语法糖,借助这个功能,我们可以消除很多重复的模板代码,将Kotlin的代码榨干到极致。...例如我们要对MutableList类拓展一个函数,如果是Java代码,或者不使用委托的Kotlin代码,你必须实现List接口中的所有函数,虽然你未作修改,只是单纯的传递调用,但是需要为这个拓展写很多无用的代码...class NewList(private val list: MutableList) : MutableList by list { fun newFunction...= with(sharedPreferences) { val result = when (defaultValue) { is String -> getString...的时候,只需要对某个要操作的属性使用by进行标记,将其委托给PreferenceDelegate即可,这样表面上好像是在操作一个String,但实际上,已经是对SharedPreferences的操作了
if(sharedPreferences.getBoolean("OnlineBooking", false)){ list_imgs.add(i, R.drawable.index_book);...list_text.add(i,"报表查看"); value.put(i, *Activity.class); i++; } if(sharedPreferences.getBoolean...); i++; } 用户登录后,将服务返回的权限值保存到sharedPreferences中,权限值为true屏幕进行设配,值为false则不显示,上面代码中将sharedPreferences中的值取出判断是否为...true,如果为true则将模块的图片加载到list_imgs,模块中的图标下的文字加载到list_test中,最后将对应模块的Activity加载到SparseArray中。...startActivity(intentcontent); }else{ Util.showToast(MainActivity.this, getResources().getString(R.string.nologin
首语 数据持久化指将哪些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,数据依然不会丢失。 Android系统中主要提供了三种方式来实现数据持久化功能。...但是SharedPreferences也存在很多缺点,它是对磁盘进行I/O操作,会引起性能问题,导致ANR,且多线程场景下效率低下、存储延迟,存储较大数据如json或html会频繁引起GC,导致界面卡顿...DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。...在 kotlin 文件顶层调用该实例一次,便可在应用的所有其余部分通过此属性访问该实例。这样可以更轻松地将 DataStore 保留为单例。...在您的 Kotlin 文件顶层调用该实例一次,便可在应用的所有其余部分通过此属性委托访问该实例。
SharedPreferences使用场景 共享参数(SharedPreferences)是Android上的一个轻量级存储工具,存储结构是类似map的key—value键值对形式。...另外,SharedPreferences还可用于保存Activity状态,当Activity暂停时,将此activity的状态保存到SharedPereferences中(主要是保存该activity必须的一些参数信息...);当Activity重载时,系统回调方法onSaveInstanceState时,再从SharedPreferences中将值取出。...String name = sps.getString("name", ""); int age = sps.getInt("age", 0); boolean married = sps.getBoolean...> Mr Lee <boolean name="
在上一篇博客Android进程保活全攻略(上)中介绍了进程保活的背景和一些方法的思路和实现方式,本篇博客我将承接上篇博客,继续进行介绍。...保活强度: 前台进程,跟前台服务差不多。... list = am.getRunningTasks(3); for (RunningTaskInfo info : list...SharedPreferences.Editor editor = prefer.edit(); editor.putString(KEY_REST_MSG, restMsg);...native进程守护缺点非常明显,那就是守护是单向的,也就是说只能a保b,b保不了a;a保b也不是在b死了立刻拉起来,要等到了时间才会去拉。那如何解决这个native进程的缺点呢?
SharedPreferences 文件后被触发。...PreferenceChangeListener 在值保存到 SharedPreferences 文件前被触发。因此,可以防止对偏好设置做出无效的更新。...新的值保存到了 SharedPreference 文件。 onSharedPreferenceChanged 监听器被触发。 除此之外,它们的行为很相似。...sharedPreferences, String key) { Preference preference = findPreference(key); if (null.../* the preference's 'entries' list (since they have separate labels/values). */ ListPreference
); String userName=sharedPreferences.getString("loginUserName",""); return userName;...newPsw) { String md5psw= MD5Utils.md5(newPsw); SharedPreferences sharedPreferences=getSharedPreferences...SharedPreferences sharedPreferences=getSharedPreferences("loginInfo",MODE_PRIVATE); String spPsw...name) { String md5Psw= MD5Utils.md5("123456"); SharedPreferences sharedPreferences =...**/ private String readSecurity(String name){ SharedPreferences sharedPreferences=getSharedPreferences
class ThemeDataSource @Inject constructor( private val sharedPreferences: SharedPreferences ) {...我们还将深入研究常见的Flow操作,如map、filter、transform等。...This is // observed in UI to get filtered result val cityFilterFlow: Flow> = cityFilterChannel...the [key] */ private fun filterCities(key: String): List { return cityList.filter...点击原文一键直达 专注 Android-Kotlin-Flutter 欢迎大家访问
如何在线上衡量启动优化的效果?又是怎么保障和监控启动速度?...创建 SharedPreferences 并且保存到 Map 中,那么需要的时候可以在 SP_MAP 中直接获取。...object SPUtils { // 保存SharedPreferences val SP_MAP = ConcurrentHashMap() open fun instance(name: String, applicationContext: Context): SharedPreferences?...编写代码只需要采用Kotlin,而不用拆分成 Kotlin + XML方式了,从命令式 UI 向声明式 UI 转变。
) startActivity(intent) finish() } } } 我们可以看到,MainActivity类的实现代码并不复杂,其中利用SharedPreferences...String): List{ var provinces = mutableListOf() if (!..., provinceCode: String): List{ var cities = mutableListOf() if (!..., cityCode: String): List{ var counties = mutableListOf() if (!...id=weather_id 这里的weather_id就是地区编码,如沈阳市和平区的编码是210102。
Kotlin 标准库中就是这么实现的: fun main(args: Array<String ) { val list = arrayListOf(1, 2) list += 3 // 添加元素到自身集合...i_n] = b a.set(i_1, ……, i_n, b) @Suppress("IMPLICIT_CAST_TO_ANY", "UNCHECKED_CAST") operator fun <T SharedPreferences.get...defValue) else - throw RuntimeException() } as T @SuppressLint("CommitPrefEdits") operator fun <T SharedPreferences.set...反之,Kotlin 中调用 Java 代码却可以同 Kotlin 中自定义操作符方法一样方便。...可以看出,操作符重载并不是一定要用如 * 、 + 、 < 这样的符号来表示的,比如之前的 in 操作符,这里的 getter 、 setter。
2 常见的保活拉起方式 了解进程被杀死的相关场景后,相信大家对进程保活已经有了初步的认识,接下来我将给大家介绍一下,现在市面上存在的各种常见的保活拉起方式,这些保活方式如下: a...KeeLiveService.class); context.startService(i); } } 2.6 监听第三方应用的静态广播 思路: 通过反编译第三方 Top 应用,如:...list = am.getRunningTasks(3); for(RunningTaskInfo info :list) { ...) { SharedPreferences prefer = getSharedPreferences("settings.data", Context.MODE_PRIVATE); ...SharedPreferences.Editoreditor = prefer.edit(); editor.putString(KEY_REST_MSG, restMsg);
SharedPreferences SharedPreferences介绍 微卡智享 SharedPreferences内部是以XML的形式进行数据存储的,采用Key/value的方式 进行映射,最终会在手机的...>( this, android.R.layout.simple_list_item_1, listitem ) } } 执行后我们可以看到在...以上就是SharedPreferences的简单使用方法,为了在别的程序中也可以方便使用,这里我们自己写了一个封装好的kotlin的SpHelper的类 SpHelper类 package dem.vac.sharedpreferencestest...= "" ): String { val setPreferences: SharedPreferences = context.getSharedPreferences..., strData: String?)
复制代码 DataStore DataStore 库是一款健壮可靠的数据存储解决方案,它解决了 SharedPreferences 所存在的问题。...如果想要了解如何在各种 SharedPreferences 的应用场景中使用这一强大的替代方案,您可以查看 MAD Skills: DataStore 系列文章和视频,其中包含了如何测试应用中 DataStore...您可以配合 RecyclerViews 或 Compose lazy list 优雅地渐进加载应用数据。...如需了解有关 Paging 3 的更多信息,请参阅 Android 开发者网站中全新简化版的教程: Paging Basics Codelab,它描述了如何在包含列表的应用中集成 Paging 库。...它提供了一些我们耳熟能详的注解,如 @NonNull。这些注解与 lint 检查配对,可以提高代码的正确性和可用性。
url 'https://www.jitpack.io' } } } Step 2 app:build.gradle(以下3种引用方式,三选一即可) dependencies { //kotlin...) 关闭指定Activity void closeAllActivity() 关闭所有Activity 5.SpUtil(SharedPreferences) void setString...String gsonString, Class cls) 转成bean List GsonToList(String gsonString, Class cls) 转成list...3.1.1 优化引用方式,可以kotlin和java分开引用,也可以一起引用。 3.1.0 简化了部分util原有的调用方式,属于兼容更新。...3.0.0 3.0.0以后新增了kotlin版本; 此外,java版本和kotlin版本都删除了ExitUtils; kotlin版本没有GsonUtil; 混淆 #YUtils -keep class
数据持久化:指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不丢失。 ...2、文件存储 将数据保存到文件:利用Context类中的openFileOutput(String fileName, int mode)方法可以将数据存储到指定的文件中,该方法返回一个FileOutputStream...3、SharedPreferences存储 通过SharedPreferences存储数据:SharedPreference存储的数据都以xml格式存储,并且都自动保存到/data/data/<packageName...具体步骤如下: 获取SharedPreferences对象 调用SharedPreferences对象的get方法获取数据,例如读取boolean类型数据就使用getBoolean(String key...3 */ 4 public List loadCounties(int cityId) { 5 List list = new ArrayList<County
领取专属 10元无门槛券
手把手带您无忧上云