对于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);
    }

那么,我在要跳转来干嘛的时候就能够直接调用指定的方法咯。非常直接的。

编程要记住“让方法名去描写叙述你要干什么”,这样再好只是。

变量、函数或类的名称应该已经答复了全部的大问题。它该告诉你。它为什么会存在,它做什么事,应该怎么用。——《代码整洁之道》

原文地址:https://www.cnblogs.com/gccbuaa/p/7064451.html