传统方式

一直以来,使用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);
}

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

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

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

对于startActivity的使用改进的更多相关文章

  1. Qt on Android: Qt 5.3.0 公布,针对 Android 改进的说明

    5月20日本,Qt 官方博客宣布 Qt 5.3.0 公布! 这个版本号聚焦在性能.稳定性和可用性的提升上,与 5.1 / 5.2 相比有非常大提升. 5.3.0 的主要变化: 稳定能.可用性大大提升 ...

  2. Android 5.0 API新增和改进

    开始开发 要构建 Android 5.0 版应用,您必须先下载 Android SDK,然后使用 SDK 管理器下载 Android 5.0 SDK 平台和系统映像. 更新您的目标 API 级别 要进 ...

  3. 120项改进:开源超级爬虫Hawk 2.0 重磅发布!

    沙漠君在历时半年,修改无数bug,更新一票新功能后,在今天隆重推出最新改进的超级爬虫Hawk 2.0! 啥?你不知道Hawk干吗用的? 这是采集数据的挖掘机,网络猎杀的重狙!半年多以前,沙漠君写了一篇 ...

  4. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  5. 挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  6. ITTC数据挖掘平台介绍(四) 框架改进和新功能

    本数据挖掘框架在这几个月的时间内,有了进一步的功能增强 一. 超大网络的画布显示虚拟化     如前几节所述,框架采用了三级层次实现,分别是数据,抽象Node和绘图的DataPoint,结构如下:   ...

  7. C# 3.0新语言特性和改进(一)

    引言 关于C#3.0的特性,园子里已经有了一大把,可能大家都很熟悉了,虽然本人开发中使用过,但自己还是需要记录一下,总结一下.同时也是后面写Linq知识的基础.希望有兴趣的朋友,可以看看. C# 3. ...

  8. jqGrid插件getCol方法的一个改进

    jgGrid插件是非常常用的一个基于jQuery的表格插件,功能非常强大.我最近也频繁使用.但是这个插件也有一些不够完善的地方.比如这个getCol方法. getCol方法接受三个参数 colname ...

  9. kaggle入门2——改进特征

    1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...

随机推荐

  1. 小学生都能学会的python(函数的进阶)

    小学生都能学会的python(函数的进阶) 1. 动态传参 形参: 1. 位置参数 2. 默认值参数 3. 动态传参 *args 动态接收位置参数 **kwargs 动态接收关键字参数 def fun ...

  2. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

  3. AjAX 常用参数

    1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如 ...

  4. HTML5 基础测试题

          HTML5 基础测试题 1.HTML5 之前的 HTML 版本是什么?() A.HTML 4.01 B.HTML 4 C.HTML 4.1 D.HTML 4.9 2.HTML5 的正确 d ...

  5. ASP.NET-internat身份验证

    ASP.NET-internat身份验证默认在webconfig中配置的代码是这样的 <system.web> <compilation debug="true" ...

  6. [AngularJS]Chapter 5 与服务器交互

    第八章有关于缓存的东西. [通过$http交互] 传统的AJAX请求如下 var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange ...

  7. 代理模式之cglib动态代理

    上一篇博客说了实现InvocationHandler接口的jdk动态代理,还有一种实现动态代理的方式则是:通过继承的方式实现的cglib动态代理. 先在程序中导入cglib的包,cglib-nodep ...

  8. ADO.NET (二)—— ADO和ADO .NET对照

     ADO.NET (二)-- ADO和ADO .NET对照       我们知道ADO.NET的两大核心组件各自是Data Provider和DataSet.假设说 DataSet是ADO.NET的心 ...

  9. Android ImageView 不显示JPEG图片 及 Android Studio中怎样引用图片资源

    Android ImageView 不显示JPEG图片 今天在写一个小实例,ImageView在xml里面设置的是INVISIBLE,在代码里须要设置成setVisibility(View.VISIB ...

  10. UBUNTU 16.04 下安装动态链接库方法(使用ln命令可以随意映射动态库,ldd查看缺少的动态库)

    一般先使用ldd 来查看该应用程序缺少什么东西,然后,再根据sudo apt install XXX 去安装相应的动态库. 假如没有对应的库,可以使用: sudo ln -s /usr/lib/lib ...