•开始热身

  通过之前的学习,我们现在可以很容易的启动一个活动;

  首先通过 Intent 构造出当前的 “意图”,然后调用  startActivity()  方法将活动启动起来;

  如果需要传递数据,也可以借助 Intent 来完成;

•准备工作

  新建一个项目,命名的话,我干了,您随意;

  选择 No Activity;

  进入项目后,将项目结构手动改为 Project 模式;

  点击 app/src/main/java,在相应的包名下新建一个 Empty Activity,命名为 FirstActivity;

  并将该活动设置为主活动;

  接着新建一个 Empty Activity,命名为 SecondActivity;

•今日份话题

  假设 SecondActivity 中需要用到非常重要的数据,在启动 SecondActivity 的时候必须要传过来;

  我们可以编写如下代码;

Intent intent = new Intent(FirstActivity.this,SecondActivity.class);
String data1 = "data1";
String data2 = "data2";
intent.putExtra("data1",data1);
intent.putExtra("data2",data2)
startActivity(intent);

  这样写是完全正确的,不管是从语法上还是规范上;

  只是在真正的项目开发中经常会有对接的问题出现;

  比如 SecondActivity 并不是由你开发的,但现在你负责的部分需要启动 SecondActivity;

  而你却不清楚启动这个活动需要传递什么数据。

  这是无非有两种办法:

  • 阅读 SecondActivity 的源码
  • 询问负责编写 SecondActivity 的同事

  是不是略微有点麻烦?

  其实只需换一种写法,就可以轻松解决这个麻烦;

  修改 SecondActivity.java 中的代码;

public class SecondActivity extends AppCompatActivity {

    public static void actionStart(Context context, String data1,String data2){
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra("data1",data1);
intent.putExtra("data2",data2);
context.startActivity(intent);
} @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
}
}

  我们在 SecondActivity 中添加了一个  actionStart() 方法;

  在这个方法中完成了 Intent 的构建;

  另外,所有 SecondActivity 中需要的数据都是通过  actionStart() 方法的参数传递过来的;

  然后把它们存储到 Intent 中,最后调用  startActivity() 启动 SecondActivity;

  这样写的好处就是:

  • 一目了然

    • SecondActivity所需要的数据在方法中全部体现出来了
  • 简化了启动活动的代码
    • 在 FirstActivity.java 中,只需要一行代码就可以启动 SecondActivity
    • SecondActivity.actionStart(FirstActivity.this,"data1","data2");

Android学习之启动活动的最佳写法的更多相关文章

  1. Android启动活动的最佳写法

    1.我们一般启动另一个活动的方式是: Intent intent = new Intent(MainActivity.this,SecondActivity.class); intent.putExt ...

  2. Android开发之启动Activity的最佳写法

    从MainActivity跳转到SecondActivity 在SecondActivity中,写一个静态方法actionStart() public static void actionStart( ...

  3. android学习-Activity启动过程详解

    注:只是说明启动activity的过程(ActivityThread如何与ActivityManagerService简称AmS进行进程间通信调用全过程),不解析android从zygote(受精卵) ...

  4. 10月9日Android学习笔记:活动与服务之间的通信

    最近在照着<第一行代码>这本书来学安卓,顺便记下笔记.主要的内容是Android中服务的第二种启动方式,通过活动绑定服务来启动服务,实现活动与服务之间的通信. 一. 首先创建一个服务类 p ...

  5. Android学习路-activity活动

    activity即活动,是一种包含用户界面的组件,用于与用户进行交换   创建activity类 1.类继承Activity, activity传递一个bundle对象,可以获得onSaveInsta ...

  6. Android学习:ActionBar活动条

    菜单定义: <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android=" ...

  7. Android学习之基础知识四-Activity活动8讲(活动的灵活运用)

    一.判断当前是在哪个活动 1.我们还是接着上一讲的代码,首先创建一个Java类:BaseActivity.java.这个类我们不作为一个活动,也不在AndroidManifest.xml中注册,它只是 ...

  8. (Android第一行代码实验一)活动的最佳实践

    活动的最佳实践    1.知晓当前是在哪一个活动         这个技巧将教会你,如何根据程序当前的界面就能判断出这是哪一个活动.  首先需要新建一个 BaseActivity 继承自 Activi ...

  9. android:活动的最佳实践

    2.6.1    知晓当前是在哪一个活动 这个技巧将教会你,如何根据程序当前的界面就能判断出这是哪一个活动.可能你会觉 得挺纳闷的,我自己写的代码怎么会不知道这是哪一个活动呢?很不幸的是,在你真正进入 ...

随机推荐

  1. 前端架构模式 All In One

    前端架构模式 All In One 架构模式 同构 异构 微前端 Web Components 组件化 无框架 去框架 前后端分离 前端架构图 Clean Architecture https://b ...

  2. Async Programming All in One

    Async Programming All in One Async & Await Frontend (async () => { const url = "https:// ...

  3. Dart: puppeteer库

    和node的差不多,只有写API不一样 puppeteer 地址 安装依赖 dependencies: puppeteer: ^1.7.1 下载 chrome-win 到 <project_ro ...

  4. NGK发力社区 打造三大社群模式

    当人们谈论区块链.数字货币的时候,常常会提到这样一些词汇:社区.社群,社区对区块链项目乃至于整个区块链行业的重要性已经形成了基本的行业共识,几乎每个项目方都在想尽办法营造社区.激发社区活力. 为什么区 ...

  5. Prism.WPF -- Prism框架使用(上)

    本文参考Prism官方示例 创建Prism项目 将App.xaml中的WPF标准Application替换为PrismApplication,移除StartupUri属性: 将App.xaml.cs中 ...

  6. ZooKeeper未授权访问漏洞确认与修复

    目录 探测2181 探测四字命令 用安装好zk环境的客户端连接测试 修复 修复步骤一 关闭四字命令 修复步骤二 关闭未授权访问 zookeeper未授权访问测试参考文章: https://www.cn ...

  7. 模式识别Pattern Recognition

    双目摄像头,单目摄像头缺少深度 Train->test->train->test->predicive

  8. Linux速通03 目录文件的浏览、管理和维护

    Linux文件系统的层次结构 # 树状结构:在Linux或Unix操作系统中,所有的文件和目录都被组织成一个以根节点开始的倒置的树状结构. # 目录的定义:目录相当于Windows中的文件夹,目录中存 ...

  9. JS时间格式转成字符串

    formatNumber = n => { n = n.toString(); return n[1] ? n : '0' + n }; // 时间格式化 formatTime = date = ...

  10. 爬虫入门到放弃系列05:从程序模块设计到代理IP池

    前言 上篇文章吧啦吧啦讲了一些有的没的,现在还是回到主题写点技术相关的.本篇文章作为基础爬虫知识的最后一篇,将以爬虫程序的模块设计来完结. 在我漫(liang)长(nian)的爬虫开发生涯中,我通常将 ...