未设置Android位置附加功能

时间:2018-01-22 12:01:26

标签: android kotlin location

位置捆绑包的奇怪问题: 在某些时候,location.extras不接受任务

val l=Location("SRC")
val x = Bundle()
l.extras = x

然后

l.extras == x 

返回 false!

为什么?!

因此,

Bundle().also{location.extras=it}.putBoolean("Foo", false)

使用空包创建location.extras。

为什么呢?有任何合理的解释吗?

1 个答案:

答案 0 :(得分:0)

正如@Selvin在The sources of Location.java

中提到的那样
class="match"

这相当于

public void setExtras(Bundle extras) {
    mExtras = (extras == null) ? null : new Bundle(extras);
}

val l = Location("SRC")
val x = Bundle(x)
l.extras = x // means l.extras = Bundle(x) = Bundle(Bundle(x))

应该

Bundle(x) != x

那将检索要编辑的正确实例。 小心单线挑战。