Tag: 选项

服务不写入SharedPreferences

所以,我有一个在后台处理播放音频文件的服务。 我想能够将服务写入SharedPreferences以便可以根据服务的当前状态更新UI,比如当应用程序从前台 – >后台 – >前台再次运行时。 不幸的是,从服务写入SharedPreferences似乎是不可能的。 我真的不想使用任何静态变量,所以我认为当发生状态变化时,将服务的状态写入后台将是最佳的。 这里是SharedPreferences代码,它真的没什么新意。 private fun saveAudioServiceStateToSharedPreferences(isRunning: Boolean) { d { "saving state: [${isRunning}]" } val sharedPref = PreferenceManager.getDefaultSharedPreferences(this) val editor = sharedPref.edit() editor.putBoolean(getString(R.string.preference_is_audio_service_running), isRunning) editor.commit() } fun isAudioServiceRunning(context: Context): Boolean { val sharedPref = PreferenceManager.getDefaultSharedPreferences(context) val isRunning = sharedPref.getBoolean(context.getString(R.string.preference_is_audio_service_running), false) if (!isRunning) { d { "Audio service is NOT […]

哪一个是Kotlin中更好的对象或顶级函数?

我在Tool.kt中加入了一些实用工具,方法A和方法B都可以正常工作。 我想方法B会保存在内存中,当我启动一个应用程序,即使我从来没有调用fun <T> preference(context: Context, name: String, default: T) 我想方法A只调用DelegatesExt.preference(this,"ZipCode",100L)时分配内存 所以我认为方法A比方法B好,对吗? 方法A. object DelegatesExt { fun <T> preference(context: Context, name: String, default: T) = Preference(context, name, default) } class Preference<T>(private val context: Context, private val name: String, private val default: T) { private val prefs: SharedPreferences by lazy { context.getSharedPreferences("default", Context.MODE_PRIVATE) } operator fun getValue(thisRef: […]

null to listOf(),not null to listOf(value)in Kotlin in one liner?

让f()返回一个可为空的值。 我想要做的是这个 如果f()为null,则获取一个空列表, 否则,如果f()不为null,则获取单个项目value的列表。 在斯卡拉,我们可以做这样的事情: Option(f()).toList 或更详细地说 Option(f()).map(v => List(v)).getOrElse(List.empty) 在Kotlin中,没有Option (假设没有Funktionale库),并且null在Scala中不具有toList()不像( None: Option )。 我们有Elvis操作符,但是null将会在listOf()函数内部,所以会是 listOf(f() ?: /* What can I do here? */) 我们想要的null是listOf(/*no argument */) ,但是Elvis操作符需要一个参数,所以listOf(f() ?: )将导致编译错误。 至少我们能做到 val v = f() if (v == null) listOf() else listOf(v) 但它是一个两班轮船。 有这个表达吗? 在那里我将使用这个表达式是在类的主要构造函数的默认参数,所以如果它不是一个班轮,它将被括在方括号,所以这样的事情: class A( val p1: List<V> = run { val […]