当前位置: 首页 > news >正文

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

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

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

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

相关文章:

  • [设计模式][c++]状态切换模式
  • POJ2117-Electricity
  • HTML/CSS 知识点
  • java并发编程之:线程共享数据的方式
  • 《2017年全球数据库安全市场趋势》
  • 聊聊运维(1)证明你是坏运维的七个迹象,不要做CPR运维
  • 怎样制作C#安装程序
  • Sqoop_具体总结 使用Sqoop将HDFS/Hive/HBase与MySQL/Oracle中的数据相互导入、导出
  • [UWP]了解模板化控件(6):使用附加属性
  • 新公司,新挑战
  • linux: 进程管理常用指令
  • RabbitMQ6种常用业务场景分析
  • 面试题——敲代码推断操作系统位数
  • FetchType与FetchMode的差别
  • 4443: [Scoi2015]小秃玩矩阵|二分答案|匈牙利
  • gops —— Go 程序诊断分析工具
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • Koa2 之文件上传下载
  • OpenStack安装流程(juno版)- 添加网络服务(neutron)- controller节点
  • Puppeteer:浏览器控制器
  • 番外篇1:在Windows环境下安装JDK
  • 构建工具 - 收藏集 - 掘金
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 前端学习笔记之观察者模式
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 探索 JS 中的模块化
  • 用Canvas画一棵二叉树
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​2021半年盘点,不想你错过的重磅新书
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #laravel 通过手动安装依赖PHPExcel#
  • %check_box% in rails :coditions={:has_many , :through}
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (TOJ2804)Even? Odd?
  • (附源码)springboot课程在线考试系统 毕业设计 655127
  • (附源码)计算机毕业设计ssm基于B_S的汽车售后服务管理系统
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)ORM
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .bat批处理(一):@echo off
  • .NET delegate 委托 、 Event 事件
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net语言中的StringBuilder:入门到精通
  • @FeignClient注解,fallback和fallbackFactory
  • @Repository 注解
  • @staticmethod和@classmethod的作用与区别
  • @value 静态变量_Python彻底搞懂:变量、对象、赋值、引用、拷贝
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [bug总结]: Feign调用GET请求找不到请求体实体类
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [C/C++]数据结构 堆的详解
  • [flask] flask的基本介绍、flask快速搭建项目并运行