zoukankan      html  css  js  c++  java
  • 对于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);
        }

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

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

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

  • 相关阅读:
    不测的秘密:精准测试之路----读书笔记(第二章)
    如何使用for循环连续的实例化多个对象!
    java如何在一个有序的数组类插入一个数!
    webstrom 常用快捷键
    如何使Label带有链接??此法感觉有点取巧!!!
    System.DateTime的一些格式
    如何解决”无法将类型为“System.DateTime”的对象强制转换为类型“System.String”。“
    如何解决“连接未关闭。 连接的当前状态为打开”问题
    c语言中 %p的含义
    什么情况下用递归?
  • 原文地址:https://www.cnblogs.com/gccbuaa/p/7064451.html
Copyright © 2011-2022 走看看