我知道有两种方法可以用意图启动一个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有点清晰,因为它将意图信息保存在实际上将以意图启动的类中。
答案 0 :(得分:1)
案例第一
优点:
DRY
原则意味着不要重复你的自我缺点:
仅限于一个类别,即ActivityB.class
不清楚实用工具类的命名约定
请注意添加额外属性,除非修改方法定义以接受某些map
或其他内容
第二个案例
优点:
可以更灵活地开展任何活动
任何属性都可以添加到intent
对象i.g putExtra
以及其他许多
缺点:
不遵循DRY原则
多次重复时效率低
改进
Class<?>
接受任何类作为参数答案 1 :(得分:1)
这两种方法完全相同。
我认为第一种方法确实更容易理解,而且代码更少。但我认为大多数人习惯了第二种方法,当他们看到这样的时候可能会有点困惑。虽然我没有想到,但这个缺点并不显着。
问题是,如果你使用第一种方法,你仍然需要使用第二种方法,如果你想开始一项你没有创建的活动,因为你不能只是添加静态方法已编译的.class文件。这可能会使您的代码有点不一致。
此外,名称newIntent
有点令人困惑。我不知道它是否只是我,但听起来有点像你从活动B到A?也许只是intent
?