为什么在活动之间访问变量时不首选 getter?

2024-01-17

每天都会有很多这样的问题type https://stackoverflow.com/questions/10978788/how-to-share-variables-between-classes-in-java#comment14339055_10978788 on SO:

如何从另一个变量获取变量Activity?

答案通常建议使用SharedPreferences or Intent.putExtra().

对我来说,一个gettermethod 是从另一个类访问变量的方法。毕竟,Activity正在考虑的是一个类,它的变量是类成员。

为什么 getter 方法不优于 SharedPreferences 或 Intent extras 等方法?

我正在谈论需要在活动之间访问变量的简单情况,例如:

class OneClass extends Activity {
    int a;

    ..
    // some changes to a
    ..
}

然后在另一个班级(Activity):

class SomeOtherClass extends Activity {
    ..
    // trying to access a here
    ..
}

Is a getter这里的方法正确与否?

再说一遍——我并不是在谈论这些事情实际上是正确的方法的场景。SharedPreferences用于少量数据的持久存储,extras正如文档所说:这可用于向组件提供扩展信息。例如,如果我们有一个发送电子邮件消息的操作,我们还可以在此处包含额外的数据来提供主题、正文等。


由于某些答案可能表明存在某些情况,例如无法保证其他情况Activity活着,我想有更多可能和正确的理由来解释为什么人们建议追求意图和共同偏好。


你的问题的答案有两个:

  • 对于meta方面,无论如何,它属于meta SO,许多新手程序员看到Android,想要编写应用程序,并且不喜欢Java。
  • 对于另一个问题,通常使用 getter 和 setter 是行不通的,因为您无法以直接的方式在 Activity 之间传递对象。虽然从技术上讲您可以使用 Parcelable 来完成此操作,但不建议这样做,更好的方法是使用意图在应用程序组件之间传递数据。
  • 这里强调的另一点是 Android 应用程序应该在组件内保留最少量的状态。我认为这是Android的巨大成功。如果您查看现有的应用程序,就会发现平均而言,全局状态比用 Java 编写的典型程序要少得多。程序也更小,这是可以预料的,但是原子活动可以代表单个屏幕的状态,并且任何单个屏幕通常不会在整个应用程序中保留那么多状态,这导致应用程序组件之间有良好的逻辑分离。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么在活动之间访问变量时不首选 getter? 的相关文章

随机推荐

  • 记录用户交互:log4j?

    我需要你的建议 我有一个Java应用程序 我想记录用户使用我的应用程序的方式 我想知道最常用的按钮是什么 计算应用程序中介绍新患者的平均时间 ETC 您认为最好 最简单的方法是什么 是使用Log4j吗 谢谢您的合作 此致 Daniel 考虑
  • 在新窗口中打开的Web资源中使用Xrm.WebApi方法

    我使用以下命令在新窗口中打开了 HTML Web 资源 Xrm Navigation openWebResource webResource windowOptions data 这是一个 HTML Web 资源 它正在头部加载 Clien
  • 无法在 Flink 新 Kafka Consumer-api (1.14) 中的检查点上向 Kafka 提交消费偏移量

    我使用以下代码引用 Kafka 源连接器的 Flink 1 14 版本 我期待以下要求 在应用程序刚开始时必须读取 Kafka 主题的最新偏移量 在检查点上 它必须将消耗的偏移量提交给 Kafka 重新启动后 当应用程序手动终止 系统错误时
  • PHP 中 /Filter /FlateDecode PDF 流中的数据提取

    我无法解密流中的数据 例如 56 0 obj lt lt Length 1242 Filter FlateDecode gt gt stream x n b Kq whole binary is omitted endstream endo
  • Leaflet MarkerCluster:是否可以打开多个集群组?

    我最近开始使用传单 我发现了很棒的插件传单标记集群 我目前正在尝试同时打开多个集群组 不幸的是我在谷歌上找不到任何东西 我有几个聚类组 并从一个标记到另一个标记建立连接 用户应该能够打开所绘制的线所属的两个集群组 因此我的问题是 是否有一个
  • SciPy KDE 梯度

    我正在使用内核密度估计 KDE 的 SciPy 实现 http docs scipy org doc scipy reference generated scipy stats gaussian kde html http docs sci
  • java web 服务的推荐框架[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 从一个文件绘制多个数据集

    注意 我可以控制数据文件的格式 但它必须是单个文件 我正在尝试使用 gnuplot 在同一个图表上绘制多个数据集 理想情况下我想绘制这样的东西 data 1 0 0 data 2 0 0 data 1 1 1 data 2 0 1 data
  • 解析json数组?

    我有一个如下所示的 JSON agentsArray ID 570 picture 03803 png name Bob ID 571 picture 02103 png name Tina 现在我试图循环每个数组元素 使用qt json图
  • 如何在 C# 中同时将控制台输出到多个流?

    我有一个程序 它获取控制台输出并将其写入日志文件 但它不再显示在控制台窗口中 有没有办法将其保留在窗口中 但也将其写入日志文件 Update appLogStream new FileStream logFile FileMode Appe
  • MacOSbrew安装libsndfile但仍然找不到

    我刚刚从 Windows 切换到 Mac 并且尝试使用 brew 为我的一个 C 项目安装 libsndfile 但安装后仍然显示终端中找不到错误 我似乎无法弄清楚为什么 brew install libsndfilelibsndfile
  • Azure - 在 Java Spring Boot 中使用用户管理身份访问 Key Vault:错误详细信息:ManagedIdentityCredential 身份验证不可用?

    我有一个 Java Spring boot 应用程序 仅从 Azure Key Vault 读取机密 以下是使用的步骤 创建了应用程序注册 复制应用程序注册详细信息 生成的秘密 授予对 Azure Key Vault 的访问权限 下面是我的
  • 底部导航上方的底部工作表

    我的目标是将 底页 放在BottomNavigationView像这样 但它仍然保持以下方式 两种观点都崩溃了 这是我的主要活动的 xml
  • OAuth2 装饰器 oauth 感知强​​制身份验证

    我对两者之间区别的理解oauth aware and oauth required就是它aware不强制授权 同时required确实如此 但这不是我在实践中看到的 我有下面两个 webapp RequestHandlers 其中之一get
  • 使用 .Net Socket 从 http 服务器下载并保存文件

    大家好 我想知道如何下载文件并将其保存到我的硬盘上 特别是zip使用以下命令从 HTTP 服务器获取文件System Net Socket Sockets class 我知道有更简单的方法下载文件使用 Net 但我想知道该怎么做带插座 当然
  • 如何在 SQL Server Express Edition 中启动并运行分析服务

    我被这个问题困扰得很厉害 我正在运行 Microsoft SQL Server 2008 R2 和 Business Intelligence Development Studio 我被分配了一个分析项目 现在碰巧我有一个 Express
  • 支持 RavenDB 的 MVC4 会员系统

    我创建了很多快速的 概念验证 MVC 应用程序 实际上我发现随 MVC4 模板一起提供的 SimpleMembership 提供程序非常方便 因为它可以让我在几分钟内启动并运行用户注册和 OAuth 但是 我已经开始使用RavenDb 在R
  • 实现由 WebBrowser 控件调用的 IDispatch::Invoke

    我正在尝试按照他们的解释去做this http msdn microsoft com en us library aa770041 28VS 85 29 aspx Controlling Download and Execution文章在C
  • Weka 的主成分分析

    我刚刚在训练集上计算了 PCA Weka 返回了新属性及其选择和计算方式 现在 我想使用这些数据构建一个模型 然后在测试集上使用该模型 不知道有没有办法根据新的属性类型自动修改测试集 您是否需要主成分进行分析或仅将其输入分类器 如果不是 只
  • 为什么在活动之间访问变量时不首选 getter?

    每天都会有很多这样的问题type https stackoverflow com questions 10978788 how to share variables between classes in java comment143390