通过单向和另一种方式启动活动有什么好处?

时间:2017-07-08 17:01:58

标签: android android-intent android-activity

我知道有两种方法可以用意图启动一个Activity。假设我在活动A中,我想开始活动B.我可以做以下事情。

1) 在Activity B中我有一些静态方法:

public static Intent newIntent(Context packageContext){
    Intent intent = new Intent(packageContext, ActivityB.class);
    return intent;
}

从活动A我可以打电话:

startActivity(ActivityB.newIntent(this));

2)另一种方法是我经常看到的方法:

从活动A我做以下

Intent intent = new Intent(this, ActivityB.class);
startActivity(intent);

使用一个与另一个有任何好处或缺点吗?我认为方法1有点清晰,因为它将意图信息保存在实际上将以意图启动的类中。

2 个答案:

答案 0 :(得分:1)

案例第一

优点:

  • 这遵循DRY原则意味着不要重复你的自我

缺点:

  • 仅限于一个类别,即ActivityB.class

  • 不清楚实用工具类的命名约定

  • 请注意添加额外属性,除非修改方法定义以接受某些map或其他内容

第二个案例

优点:

  • 可以更灵活地开展任何活动

  • 任何属性都可以添加到intent对象i.g putExtra以及其他许多

缺点:

  • 不遵循DRY原则

  • 多次重复时效率低

改进

  • 为您的方法正确命名
  • 可以重载以接受键值的地图
  • 应用Class<?>接受任何类作为参数

答案 1 :(得分:1)

这两种方法完全相同。

我认为第一种方法确实更容易理解,而且代码更少。但我认为大多数人习惯了第二种方法,当他们看到这样的时候可能会有点困惑。虽然我没有想到,但这个缺点并不显着。

问题是,如果你使用第一种方法,你仍然需要使用第二种方法,如果你想开始一项你没有创建的活动,因为你不能只是添加静态方法已编译的.class文件。这可能会使您的代码有点不一致。

此外,名称newIntent有点令人困惑。我不知道它是否只是我,但听起来有点像你从活动B到A?也许只是intent