传统方式
一直以来,使用startActivity
的方式就是例如以下:
比方从AActivity
跳转到BActivity
。那么我们是在AActivity
中这样去写:
Intent intent = new Intent(this, BActivity.class);
startActivity(intent);
这样写的话会遇到的问题我罗列了例如以下几点
- 每一次想跳转到
BActivity
都要写一次 - 假如我想追踪有哪些地方跳转到
BActivity
的话,比較麻烦
尽管不是什么大问题,可是。影响工作效率。
那么。有问题就要解决。有没有一种方式能够解决以上几个问题呢?
改进方式
那么我们针对以上情况,有没有方式能够改进呢?
有的,在BActivity
中能够写下例如以下静态方法:
public static void start(Context context){
Intent intent = new Intent(context, BActivity.class);
startActivity(intent);
}
那么,我在那些须要跳转到BActivity
的地方这样写就好了:
BActivity.start(this);
完毕了。省了好多代码有木有?在须要追踪有哪些地方跳到这里来,那么我查看该start
方法被哪些地方调用了就好了。
还有,还有
先看一个情景,假如有一个界面。是笔记界面(NoteActivity
),这个界面有两种功能,第一就是查看笔记,仅查看;第二就是改动笔记,可编辑。那么我们能够怎么做?
传统方式下,我想到的是定义两个ACTION
的常量。在startActivity
的时候指定ACTION
,然后在NoteActivity
里面进行推断。再做对应处理。
例如以下:
public class NoteActivity{
public final static int ACTION_READ = 0;
public final static int ACTION_EDIT = 1;
private int mAction = ACTION_READ;
... ...
@Override
protected void onCreate(Bundle savedInstanceState) {
mAction = getIntent().getIntExtra("action", ACTION_READ);
//再依据action去做对应处理
}
}
可是这样非常麻烦。我在每一个要跳到这里来的地方都要码上:
Intent intent = new Intent(this, NoteActivity.class);
intent.putExtra("action", NoteActivity.ACTION_READ);//or ACTION_EDIT
startActivity(intent);
并且用常量去指定的这样的方法不太符合代码规范,那么怎样改进呢?
我能够这样:
在NoteActivity
添加两个静态方法:
仅仅读时这样:
public static void startToRead(Context context){
Intent intent = new Intent(context, NoteActivity.class);
intent.putExtra("action", NoteActivity.ACTION_READ);
startActivity(intent);
}
编辑时这样:
public static void startToEdit(Context context){
Intent intent = new Intent(context, NoteActivity.class);
intent.putExtra("action", NoteActivity.ACTION_EDIT);
startActivity(intent);
}
那么,我在要跳转来干嘛的时候就能够直接调用指定的方法咯。非常直接的。
编程要记住“让方法名去描写叙述你要干什么”,这样再好只是。
变量、函数或类的名称应该已经答复了全部的大问题。它该告诉你。它为什么会存在,它做什么事,应该怎么用。——《代码整洁之道》