对于startActivity的使用改善
对于startActivity的使用改进
传统方式
一直以来,使用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);
}
那么,我在要跳转来干嘛的时候就可以直接调用指定的方法咯。很直接的。
编程要记住“让方法名去描述你要干什么”,这样再好不过。
变量、函数或类的名称应该已经答复了所有的大问题。它该告诉你,它为什么会存在,它做什么事,应该怎么用。——《代码整洁之道》
版权声明:本文为博主原创文章,未经博主允许不得转载。