gpt4 book ai didi

android - 为什么要初始化extra的key?

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:18 26 4
gpt4 key购买 nike

当我们想要一个 Intent 将一些数据传送到另一个应用程序组件时,我们会使用一个额外的 Intent 。 Intent 只是一个键值对。我们首先将我们的 key 定义为一个公共(public)常量,并赋予它一个值。例如

public static final String extra_key = "com.example.myapp.MESSAGE";

我们还必须将 Intent 携带的数据分配给 key 。例如

String extra_value = editText.getText().toString();

然后我们做一个额外的 Intent ,比如:

intent.putExtra(extra_key, extra_value);

我的问题:

  1. 为什么 key 必须公开?

  2. 为什么我们需要首先初始化键,为什么我们不能直接声明它,因为它会被分配一个值(数据到被 Intent 携带)无论如何。那么,为什么我们不能做点什么像 public static final String extra_key;

  3. 我读到键值应该包括反向域名,以便在其他包插入时它是唯一的。但是什么无论如何,赋予它独特的值(value)的意义在于分配另一个值,即要携带的数据 Intent 。

提前谢谢你。

最佳答案

为什么 key 必须公开?

事实并非如此。这不是关于 Intent 附加或键值对的问题。这只是一个关于 Java 变量范围和可见性的问题。

在调用类中:

intent.putExtra("KEY_NAME", "Key_Value");

在接收组件中:

intent.getStringExtra("KEY_NAME");

这项工作很好。 好的做法是让它成为public final static,这样发送方和接收方就可以使用相同的常量名称。

为什么我们首先要初始化key,为什么我们不能直接声明它,因为无论如何它都会被赋值(intent要携带的数据)。那么为什么我们不能做类似的事情

见上文。键名只不过是一个字符串。键携带数据,值携带数据。

我读到键值应该包含反向域名

这毫无意义。键值是发送方想要发送给接收方的任何数据。或者你的意思是键名?接收者必须知道 key 的名称,因此如果此 Intent 是启动外部组件,则必须使用接收者定义的 key 名称。如果 Intent 是用于内部组件,那么您可以将名称定义为您想要的任何名称。我看不出包含包名称的充分理由。它只是使用更多的内存。

关于android - 为什么要初始化extra的key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752439/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com