android – Kotlin自定义获取执行方法调用

为了提高对SharedPreferences.Editor的调用的可读性,我想使用一个Kotlin变量,每当我需要一个新的SharedPreferences.Editor时,它将执行’getSharedPreferences.edit()’.最初我打算使用这样的东西:
val editPreferences: SharedPreferences.Editor = Application.getSharedPreferences("preferences",Context.MODE_PRIVATE).edit()

但后来我被告知,’editPreferences’将保留对同一编辑器的引用,当我每次调用’editPreferences’时我真正希望它创建一个新的编辑器.

如果使用自定义getter,每次都会返回一个新的编辑器吗?像这样的东西:

val editPreferences: SharedPreferences.Editor 
    get() = Application.getSharedPreferences("preferences",Context.MODE_PRIVATE).edit()

仍在使用Kotlin并且不确定get()方法是否会引用编辑器而不是创建新的编辑器.

解决方法

第二个属性声明适合您的需要:它有一个 custom getter,因此获取属性值将始终执行getter,并且不存储该值(该属性没有 backing field).

你可能会被等号get()= …弄糊涂,但对于等效的getter形式它只是一个single-expression shorthand

val editPreferences: SharedPreferences.Editor 
    get() { 
         return Application
              .getSharedPreferences("preferences",Context.MODE_PRIVATE)
              .edit()
    }

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...