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

Kaz*_*ara 12 java android

每日在SO 上有以下类型的许多问题:

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

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

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

为什么getter方法不像SharedPreferences或Intent extras这样的方法?

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

class OneClass extends Activity {
    int a;

    ..
    // some changes to a
    ..
}
Run Code Online (Sandbox Code Playgroud)

然后在另一个类(Activity)中:

class SomeOtherClass extends Activity {
    ..
    // trying to access a here
    ..
}
Run Code Online (Sandbox Code Playgroud)

getter方法在这里是否是正确的方法?

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


由于一些答案可能表明存在某些情况,例如无法保证另一个Activity存活,我想有更多可能和正确的理由,为什么人们建议去意图和共享偏好.

Kri*_*ski 12

你的问题的答案有两个:

  • 对于属于meta SO的元方面,许多新手程序员看到Android,想要编写应用程序,并且吮吸Java.
  • 对于另一个问题,通常使用getter和setter将无法工作,因为您无法以直接的方式在Activities之间传递对象.虽然您可以在技术上使用Parcelable执行此操作,但不建议这样做,更好的方法是使用intent在应用程序组件之间传递数据.
  • 这一点强调的另一点是Android应用程序应该在组件内部保持最少量的状态.我认为这是Android的一大成功.如果你看看那里的应用程序,平均比用java编写的典型程序少得多的全局状态.程序也较小,这是预期的,但事实上原子活动可以代表单个屏幕的状态,并且任何单个屏幕通常不会在整个应用程序中保持那么多状态的事实,导致应用程序组件之间的良好逻辑分离.


Raj*_*esh 5

简单的答案是因为Activity生命周期由Android OS控制.活动与普通类不同,普通类由用户代码实例化,并保证在不再引用之前可用.