第二讲 Activity详解

简介: 第二讲 Activity详解

一、引言



二、教学内容


1、Activity介绍(***)

一种包含用户界面的组件,主要用于和用户进行交互。一个应用程序可以包含一个或多个活动,那么至于不包含任何活动的应用程序很少见,这类不予讨论。

20190412210756753.png


  1. manifest:应用清单,描述app所包含的东西
  2. java:程序源码
  3. generatedJava:
  4. res:资源文件

注意:可以点击简单了解下xml是啥,干啥用?


2、Activity内容的修改(*****)

  1. 静态修改
  2. 动态修改


3、新建Activity(***)

实现方法:在项目下(app或者任意文件夹)右击——>new——>activity


三种变化

  1. 增加一个新的类
  2. 增加一个对应的布局文件
  3. AndroidManifest.xml中增加注册信息

20190412212208696.png


4、Activity的跳转(*****)

Intent是Android中各组件之间进行交互的一种方式,在这一章节就进行显示跳转的一个简单演示,在onCreate()方法中实例化按钮对象,并设置鼠标监听。


  1. 显示跳转
//创建两个活动,在mainActivity中创建一个按钮,实现点击按钮跳转到next activity
//变量、控件的命名方式自行选择,
        Button btnAlert = this.findViewById(R.id.btnToNext);
        btnAlert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                //.this以及.class会在后面章节中说明
                startActivity(intent);
            }
        });


  1. 隐式跳转(在后面章节完成后,再通过超链接跳转)


5、跳转传值(****)

主要使用如下方法:

  • putExtra方法:放置数据;这个方法接受两个参数,第一个参数是键,用于后面从Intent中取值,第二个参数才是真正要传递的数据
  • getIntent:获取发送过来的意图
  • getStringExtra:获取传递的数据


MainActivity

Button btnAlert = this.findViewById(R.id.btnToNext);
        btnAlert.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data = "Hello Main2Activity";
                Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                intent.putExtra("extra_data",data);
                startActivity(intent);
            }


Main2Activity

Intent intent=getIntent();
        String data = intent.getStringExtra("extra_data");
        Log.d("Main2Activity",data);//日志调试


实现效果

image.png


6、跳转传值并返回(***)

所用方法如下:

  • startActivityForResult
  • setResult:放置返回数据;
  • onActivityResult:接收返回数据


7、活动状态(*****)

活动的生命周期对Android开发者十分重要,我们首先要理解返回栈的用途。


Android使用任务(Task)来管理活动,一个任务(Task)就是一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。栈是一种后进先出的数据结构,默认情况下,每当我们启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。而每当我们按下Back键或者调用finish()方法销毁一个活动时,处于栈顶的活动就会出栈,这时前一个入栈的活动就会重新处于栈顶的位置。系统总会显示处于栈顶的活动给用户。


  1. 运行态:活动正在和用户交互
  2. 暂停态:部分可见
  3. 停止态:完全不可见
  4. 销毁态:在返回栈中移除


七种回调方法

  • onCreate:创建活动,用于初始化
  • onStart:不可见到可见
  • onResume:准备好与用户进行交互的时候调用,处于栈顶,运行状态
  • onPause:启动或调用另一个活动时
  • onStop:可见——>完全不可见时调用
  • onDestroy:销毁活动时调用
  • onRestart:由停止变为运行状态之前调用

2019041320522924.png

拓展:关于Android生命周期的详解


8、活动的启动模式

启动模式一共有4种,在实际项目中根据需求指定。

在AndroidManifest.xml中通过标签指定android:launchMode


  1. standard:默认,创建活动时,不会考虑栈中是否已有此活动
  2. singleTop:在启动活动时,如果发现返回栈顶已经是该活动,则可直接使用
  3. singleTask:如果栈中有活动,则不会创建新活动,直接使用该实例,并把所有在这个活动之上的所有活动全部出栈。
  4. singleInstance:此活动与其他程序共享,专门的栈来维护此类活动


注:本节的实践将在后面完成课程实践后补全。

目录
相关文章
|
机器学习/深度学习 数据采集 人工智能
人工智能安全(下)
人工智能安全(下)
939 0
人工智能安全(下)
|
XML 安全 Java
自定义PMD检测的类型集合(详解)
自定义PMD检测的类型集合(详解)
自定义PMD检测的类型集合(详解)
|
11月前
|
消息中间件 Kafka
【赵渝强老师】Kafka生产者的执行过程
Kafka生产者(Producer)将消息序列化后发送到指定主题的分区。整个过程由主线程和Sender线程协调完成。主线程创建KafkaProducer对象及ProducerRecord,经过拦截器、序列化器和分区器处理后,消息进入累加器。Sender线程负责从累加器获取消息并发送至KafkaBroker,Broker返回响应或错误信息,生产者根据反馈决定是否重发。视频和图片详细展示了这一流程。
271 61
|
缓存 负载均衡 算法
深入探索Linux内核的调度机制
本文旨在揭示Linux操作系统核心的心脏——进程调度机制。我们将从Linux内核的架构出发,深入剖析其调度策略、算法以及它们如何共同作用于系统性能优化和资源管理。不同于常规摘要提供文章概览的方式,本摘要将直接带领读者进入Linux调度机制的世界,通过对其工作原理的解析,展现这一复杂系统的精妙设计与实现。
657 8
|
移动开发 JavaScript 前端开发
简单易用的jquery响应式轮播图插件ma5slider
ma5slider是一款简单易用的jquery响应式轮播图插件。该轮播图支持鼠标拖拽,可以通过CSS定制外观,支持无限循环模式,内置水平,垂直和淡入淡出三种轮播图过渡动画效果。
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
594 1
|
前端开发 JavaScript 数据可视化
Webpack加载器和插件之间有什么区别
【10月更文挑战第13天】Webpack加载器和插件之间有什么区别
|
网络协议
思科交换机输入错误命令卡死
思科交换机输入错误命令卡死
558 0
|
Ubuntu JavaScript 开发工具
Ubuntu上编译多个版本的frida
【7月更文挑战第16天】在Ubuntu上编译多个版本的Frida(如15.1.28和16.1.4),首先确保系统为Ubuntu 20(WSL)或其他版本,并安装`build-essential`, `git`, `lib32stdc++-9-dev`, `libc6-dev-i386`等依赖。还需安装Node.js(例如20.15.1版)。通过`git clone`获取Frida源码,并根据所需版本进入对应分支。设置环境变量以指向正确的NDK和Node.js路径,可通过脚本如`env15.sh`来避免污染全局环境。
576 2
|
敏捷开发 Java Shell
阿里云云效产品使用合集之如何设置流水线可以控制任务的串行执行
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。