7

使用带有消息的意图而不是仅仅在 java 中声明一个静态变量并从新活动中调用它的目的是什么?这种方式对我来说似乎更容易,因为你可以让静态变量成为你想要的任何东西(即 ArrayList、Object 等)。

public class FirstActivity extends Activity {
    public static String name;
... 
    Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
    name = "Robert";
    startActivity(intent);
}

public class SecondActivity extends Activity {
...
    textView.setText(FirstActivity.name);
}
4

3 回答 3

6

通过使用 extras 来启动SecondActivity,您可以使其更可重用。许多库存活动都以这种方式工作,这就是为什么您可以重用例如相机活动来拍摄和保存照片,因为它不会假设谁在调用它。

在您的情况下SecondActivity,取决于是否FirstActivity已加载到 JVM 中。我不会指望这一点,当然也不推荐在活动之间建立这种依赖关系。不要这样做。按照 SDK 的建议,使用 extras 在活动之间传递值。

于 2013-02-13T22:49:17.763 回答
1

澄清一下,如果他/她之外的另一个应用程序想要处理 Intent,则 OP 的策略将不起作用。因此,这不是“最佳实践”。

Intent 大约有 30 种不同的 putExtra 变体,每个变体代表您可以添加的不同数据类型。它们包括通用数据类型,例如 Bundle、Parcelable、Serializable 等。我想不出这些没有涵盖的任何事情。

我不使用通过覆盖 Application 或其他类似方式定义的静态变量或变量来假设某些数据在存储中浮动。假设我的 Activity 或 Fragment 是完全独立的,则更加可靠。

于 2013-02-14T01:01:12.517 回答
0

使用 Intent 让你比静态慢例如如果你使用 mvp 或 mvvm 至少你必须稍后通过层传递像 id

于 2019-10-29T19:08:24.377 回答