Activity
69@[toc]
1.启停活动页面
1.Activity启动和结束
- 从当前页面跳到新页面
startActivity(new Intent(this, ActFinishActivity.class));
- 从当前页面返回上一个页面,相当于关闭当前页面
finish();
2.Activity生命周期
官方描述生命周期

- onCreate:创建活动。把页面布局加载进内存,进入了初始状态。
- onStart:开始活动。把活动页面显示在屏幕上,进入了就绪状态。
- onResume:恢复活动。活动页面进入了活跃状态,能够与用户正常交互,例如允许响应用户的点击动作、允许输入文字等。
- onPause:暂停活动。页面进入暂停状态,无法与用户正常交互。
- onStop:停止活动。页面将不再屏幕上显示。
- onDestory:销毁活动。回收活动占用的系统资源,把页面从内存中清楚。
- onNewIntent:重用已有的活动实例。
3. Activity启动模式
- 默认启动模式 standard
- 栈顶复用模式 singleTop
- 栈内复用模式 singleTask
- 全局唯一模式 singleInstance
动态设置启动模式
- Intent.FLAG_ACTIVITY_NEW_TASK:开辟一个新的任务栈
- Intent.FLAG_ACTIVITY_SINGLE_TOP:当栈顶为待跳转的活动实例之时,则重用栈顶的实例
- Intent.FLAG_ACTIVITY_CLEAR_TOP:当栈中存在待跳转的活动实例时,则重新创建一个新的实例并清除原实例上方的所有实例
- Intent.FLAG_ACTIVITY_NO_HISTORY:栈中不保存新启动的活动实例
- Intent.FLAG_ACTIVITY_CLEAR_TASK:跳转到新页面时,栈中的原有实例被清空
Intent intent = new Intent(this, LoginSucessActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);startActivity(intent);
2.在活动之间传递信息
1.显示Intent和隐式Intent
Intent是各组件之间信息沟通的桥梁,它用于Android各组件之间的通信,主要完成下列工作:
- 表明本次通信请求从哪里来,到哪里去,要怎么走
- 发起方携带本次通信需要的数据内容,接收方从收到的意图中解析数据
- 发起方想判断接收方的处理结果,意图就要负责让接收方传回应答的数据内容
| 元素名称 | 设置方法 | 说明与用途 |
|---|---|---|
| Component | setConponent | 组件,它指定意图的来源与目标 |
| Action | setAction | 动作,它指定意图的动作行为 |
| Data | setData | 即Uri,它指定动作要操控的数据路径 |
| Category | addCategory | 类别,它指定意图的操作类别 |
| type | setType | 数据类型,它指定消息的数据类型 |
| Extras | putExtras | 扩展信息,它指定装载的包裹信息 |
| Flags | setFlages | 标志位,它指定活动的启动标志 |
显示Intent
1.在Intent构造函数中指定
Intent intent = new Intent(this, ActFinishActivity.class);
2.调用意图对象的setClass方法指定
Intent intent = new Intent();
intent.setClass(this, ActFinishActivity.class);
3.调用意图对象setComponent方法
Intent intent = new Intent();
intent.setComponent(new ComponentName(this, ActFinishActivity.class));
隐式Intent
没有明确指定要跳转的目标活动,只给出一个动作字符串让系统自动匹配,属于模糊匹配。
| Intent类系统动作常量名 | 系统动作的常量值 | 说明 |
|---|---|---|
| ACTION_MAIN | android.intent.action.MAIN | App启动时的入口 |
| ACTION_VIEW | android.intent.action.VIEW | 向用户显示数据 |
| ACTION_SEND | android.intent.action.SEND | 分享内容 |
| ACTION_CALL | android.intent.action.CALL | 直接拨号 |
| ACTION_DIAL | android.intent.action.DIAL | 准备拨号 |
| ACTION_SENDTO | android.intent.action.SENDTO | 发送短信 |
| ACTION_ANSWER | android.intent.action.ANSWER | 接听电话 |
2.向下一个Activity发送数据
Bundle
- 在代码中发送消息包裹,调用意图对象的putExtras方法,即可存入消息包裹
- 在代码中接收消息包裹,调用意图对象的getExtras方法,即可取出消息包裹
Intent intent = new Intent(this, ActReceiveActivity.class);
Bundle bundle = new Bundle();
bundle.putString("request_time",new Date().toString());
bundle.putString("request_content",tv_send.getText().toString());
intent.putExtras(bundle);
startActivity(intent);
3.向上一个Activity返回数据
处理下一个页面的应答数据,详细步骤如下:
- 上一个页面打包好请求数据,调用startActivityForResult方法执行跳转方法
- 下一个页面接收并解析请求数据,进行相应处理
- 下一个页面在返回上一个页面时,打包应答数据并调用setResult方法返回数据包裹
- 上一个页面重写方法onActivityResult,解析获得下一页面的返回数据
3.为活动补充附加信息
1.利用资源文件配置字符串
<resources><string name="weather_str">晴天</string>
</resources>
// 从strings.xml中获取名叫weather_str的文本内容
tv_resource.setText(getString(R.string.weather_str));
2.利用元数据传递配置信息
在Java代码中获取元数据信息的步骤分为三步:
- 调用getPackageManager方法获得当前应用的包管理器
- 调用包管理器的getActivityInfo方法获得当前活动的信息对象
- 活动信息对象的metaData是Bundle包裹类型,调用包裹对象的getString即可获得指定名称的参数值
// 通过getPackageManager()获取包管理器PackageManager packageManager = getPackageManager();try {// 使用getActivityInfo方法获取当前活动的信息,同时请求元数据ActivityInfo activityInfo = packageManager.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);String weather = activityInfo.metaData.getString("weather");tv_meta.setText(weather);} catch (PackageManager.NameNotFoundException e) {throw new RuntimeException(e);}
3.给应用页面注册快捷方式
元数据不仅能传递简单的字符串参数,还能传送更复杂的资源数据,比如支付宝的快捷式菜单。
元数据的meta-data标签除了前面说到的name属性和value属性,还拥有resource属性,该属性可指定一个XML文件,表示元数据想要的复杂信息保存于XML数据之中。
利用元数据配置快捷菜单的步骤如下:
- 在res/values/strings.xml添加各个菜单项名称的字符串配置
- 创建res/xml/shortcuts.xml,在该文件中填入各组菜单项的快捷方式定义(每个菜单对应哪个活动页面)
- 给activity节点注册元数据的快捷菜单配置
<activityandroid:name=".ActStartActivity"android:exported="true"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter><meta-data android:name="android.app.shortcuts"android:resource="@xml/shortcuts" /></activity>
<?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"><shortcut android:shortcutId="first"android:enabled="true"android:icon="@drawable/ic_launcher_foreground"android:shortcutShortLabel="@string/first_short"android:shortcutLongLabel="@string/first_long"><intent android:action="android.intent.action.VIEW"android:targetPackage="com.zzzjian.demo2"android:targetClass="com.zzzjian.demo2.ActStartActivity"/><categories android:name="android.shortcut.conversation"/></shortcut><shortcut android:shortcutId="second"android:enabled="true"android:icon="@drawable/ic_launcher_foreground"android:shortcutShortLabel="@string/second_short"android:shortcutLongLabel="@string/second_long"><intent android:action="android.intent.action.VIEW"android:targetPackage="com.zzzjian.demo2"android:targetClass="com.zzzjian.demo2.JumpFirstActivity"/><categories android:name="android.shortcut.conversation"/></shortcut><shortcut android:shortcutId="third"android:enabled="true"android:icon="@drawable/ic_launcher_foreground"android:shortcutShortLabel="@string/third_short"android:shortcutLongLabel="@string/third_long"><intent android:action="android.intent.action.VIEW"android:targetPackage="com.zzzjian.demo2"android:targetClass="com.zzzjian.demo2.LoginInputActivity"/><categories android:name="android.shortcut.conversation"/></shortcut></shortcuts>

相关文章:
Activity
69[toc] 1.启停活动页面 1.Activity启动和结束 从当前页面跳到新页面 startActivity(new Intent(this, ActFinishActivity.class));从当前页面返回上一个页面,相当于关闭当前页面 finish();2.Activity生命周期 官方描述生命周期 onCreate:创建活…...
【力扣 | SQL题 | 每日四题】力扣1581, 1811, 1821, 1831
今天的题目就1811这个比较难,其他非常的基础。 1. 力扣1581:进店却未进行过交易的顾客 1.1 题目: 表:Visits ---------------------- | Column Name | Type | ---------------------- | visit_id | int | | customer…...
洛谷【P1955 [NOI2015] 程序自动分析】
反思: 这道题一眼就是并查集 但是数据太大 mle和re都是有可能的我看了题解才知道是离散化数组加并查集离散化再两个月前我觉得好难啊 那道题跟本看不懂 现在觉得还行 离散化思路: 需要一个离散记录数组----ls[N]用来记录下出现的数 步骤: …...
Swift并发笔记
1.同步和异步 说到线程的执行方式,最基本的一组概念是同步和异步。所谓同步,就是在操作执行完成之前,运行操作的这个线程都会被占用,直到函数最终被抛出或返回。Swift5.5之前,func关键字声明的所有的函数都是同步的。…...
React 组件命名规范
在 React 项目中,如果希望保持组件命名的一致性,并防止在引入时出现不同名称的问题,可以遵循以下的组件规范: 1、默认导出组件: 所有特殊要求的组件(如页面组件或根组件)应该使用 export defau…...
eNSP网络配置指南:IP设置、DNS、Telnet、DHCP与路由表管理
1.eNSP基本操作和路由器IP配置命令 登录设备:通过Console口或通过eNSP的Telnet/SSH客户端登录到设备。进入特权模式:输入system-view进入系统视图。接口配置: 进入接口视图,例如interface GigabitEthernet0/0/0。配置IP地址和子网…...
初步认识产品经理
产品经理 思考问题的维度 1️⃣为什么要抓住核心用户? 所有和产品有关系的群体就是用户,存在共性和差异了解用户的付费点,更好的优化产品是否使用:(目标用户-已使用产品:种子用户-尝鲜;核心用…...
web前端面试中拍摄的真实js面试题(真图)
web前端面试中拍摄的真实js面试题(真图) WechatIMG258.jpeg WechatIMG406.jpeg WechatIMG407.jpeg WechatIMG922.jpeg WechatIMG1063.jpeg © 著作权归作者所有,转载或内容合作请联系作者 喜欢的朋友记得点赞、收藏、关注哦!!…...
python 人工智能 机器学习 当损失函数的数值变成 `nan` 时,这通常意味着在模型训练过程中出现了数值不稳定性以及解决办法,数据分析
当损失函数的数值变成 nan 时,这通常意味着在模型训练过程中出现了数值不稳定性。以下是一些可能导致这个问题的原因以及相应的解决方法: 1. **学习率过高**:如果学习率设置得过高,可能会导致梯度爆炸,从而导致损失函…...
Kafka快速实战与基本原理详解
笔记:https://note.youdao.com/ynoteshare/index.html?id=b0357bdb4821ed2e35ecdbdacd65aa06&type=note&_time=1727570043631 启动kafka之前先启动zookper 看看ZK里面都有什么数据 : 刚开始什么数据都没有 接下来启动kafka,启动好后,日志在这里看: 启动好了kaf…...
tftp传文件被服务器拒绝进入tftp: server error: (768) Access to staonline.pcap denied
环境:测试一个ac下挂ap,ap下的抓包文件传出时,出现问题: ac的wan口ip是192.168.186.167/24,gw是192.168.186.1,下挂ap的ip是192.168.202.199/24,ac上开子接口192.168.202.1/24,ac上开…...
express,生成用户登录后的 token
在 Node.js 中使用 Express 框架生成用户登录后的 token,通常会涉及到以下几个步骤: 设置 Express 应用:首先,你需要有一个基本的 Express 应用。安装必要的中间件:例如 jsonwebtoken(JWT)用于…...
银河麒麟桌面操作系统修改默认Shell为Bash
银河麒麟桌面操作系统修改默认Shell为Bash 💐The Begin💐点点关注,收藏不迷路💐 在银河麒麟桌面操作系统(ARM版)中,若要将默认Shell从Dash改为Bash,可执行以下步骤: 打开…...
卷积神经网络(Convolutional Neural Networks, CNN)
卷积神经网络(Convolutional Neural Networks, CNN)是深度学习领域中用于处理具有网格结构的输入(如图像和视频)的神经网络模型。下面以最简单、直观的方式概述CNN的主要流程及其基本概念: 1. 输入层 概念:…...
SpringBoot系列 启动流程
文章目录 SpringApplicationSpringApplication#run 启动流程BootstrapContextSpringApplicationRunListenersprepareEnvironmentconfigureEnvironmentconfigurePropertySourcesconfigureProfiles 上下文初始化prepareContextrefreshContextprepareRefreshobtainFreshBeanFactor…...
vgg19提取特征
一般来说,大家使用VGG16,用的是第四列的网络架构,而使用VGG19,使用的就是第六列的网络架构。 使用vgg进行提取特征,在这个项目中,使用的就是每一块卷积层的第一层。 import torch.nn as nn from torchvis…...
Qt 中的 QChartView
深入理解 Qt 的 QChartView:图表展示与交互 QChartView 是 Qt Charts 模块中的一个核心类,它用于在 Qt 应用程序中显示图表,并支持多种用户交互方式。它继承自 QGraphicsView,通过封装 QChart,为用户提供了强大的图表…...
cheese安卓版纯本地离线文字识别插件
目的 cheese自动化平台是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务,节省大量人工操作的时间。可以采用Vscode、IDEA编写,支持Java、Python、nodejs、GO、Rust、Lua。cheese也包含图色功能,识别…...
【C++】多肽
目录 一 多肽定义 1. 多肽的构成条件 1 例一 2 例二 2. 虚函数 3. 虚函数重写的两个意外 1 协变 2 析构函数的重写 二 关键字override 和 final 1. final 2.override 三 三重对比 1. 练习 四 多肽的原理 1. 多肽调用和普通调用 2.虚函数表 3. 分析 4. 原理 …...
Linux下Socket编程
1. Socket简介 Socket是什么? Socket是一种进程间通信的机制,通过它应用程序可以通过网络进行数据传输。Socket提供了一种跨平台的接口,使得同样的代码可以在不同的操作系统上运行。Socket类型 流式套接字(SOCK_STREAM࿰…...
智能简化黑苹果配置:OpCore Simplify为技术爱好者打造的自动化解决方案
智能简化黑苹果配置:OpCore Simplify为技术爱好者打造的自动化解决方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是…...
认知研究避坑指南:为什么CHARLS数据需要按教育程度分层修正?
认知研究避坑指南:教育程度分层在CHARLS数据修正中的关键作用 老龄化认知研究领域的数据分析常常面临一个棘手问题:如何确保不同时间点收集的认知测试分数具有可比性?中国健康与养老追踪调查(CHARLS)作为国内重要的老龄…...
零代码实现YouTube视频翻译:Hugging Face大语言模型实战教程
零代码实现YouTube视频翻译:Hugging Face大语言模型实战教程 在全球化内容消费的今天,语言障碍成为许多人获取知识的隐形门槛。想象一下,当你发现一个精彩的英文技术讲座视频,却因为语言问题无法充分理解;或是需要将中…...
GHelper技术解析:华硕笔记本轻量级性能优化工具架构与配置指南
GHelper技术解析:华硕笔记本轻量级性能优化工具架构与配置指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops. Control tool for ROG Zephyrus G14, G15, G16, M16, Flow X13, Flow X16, TUF, Strix, Scar and other models …...
别再只盯着7805了!聊聊LDO选型时那些容易被忽略的关键参数(附实测对比)
LDO选型实战指南:超越7805的五大高阶参数解析 在电子设计领域,低压差线性稳压器(LDO)如同电路系统中的"毛细血管",负责将能量精准输送到每个功能模块。当大多数工程师还在使用上世纪设计的7805时,现代LDO芯片早已进化出…...
Linux Docker Compose 部署.NET+Vue+MySQL+Redis+Nginx 完整记录(亲测无坑)
写在前面:为什么用 Docker Compose?比单容器部署好在哪? 做容器化部署时,单靠docker run命令逐个启动 MySQL、Redis、后端、Nginx 容器会非常繁琐 —— 不仅要记大量命令参数,还得手动控制容器启动顺序、配置网络联动…...
10分钟掌握AI-Render:在Blender中玩转Stable Diffusion的终极指南
10分钟掌握AI-Render:在Blender中玩转Stable Diffusion的终极指南 【免费下载链接】AI-Render Stable Diffusion in Blender 项目地址: https://gitcode.com/gh_mirrors/ai/AI-Render 你是否想过,在Blender这个强大的3D创作软件中,直接…...
Windows系统安装APK应用:APK Installer全面解析与高效使用指南
Windows系统安装APK应用:APK Installer全面解析与高效使用指南 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在Windows电脑上直接运行Android应用曾经是一…...
【AI智能体实战】基于Dify构建自然语言数据库查询系统的全流程解析
1. 为什么需要自然语言查询数据库? 想象一下这个场景:市场部的同事小王需要从公司数据库里找出"去年销售额超过100万且退货率低于5%的客户名单"。如果他不会写SQL,要么得找IT部门帮忙,要么得花半天时间导出Excel手动筛选…...
基于SPI硬件外设的NeoPixel高精度驱动方案
1. 项目概述neopixels_spi是一个专为 ARM Cortex-M 平台设计的轻量级、高可靠性 NeoPixel(WS2812B 类)驱动库,其核心创新在于完全摒弃传统 GPIO 模拟时序方案,转而采用硬件 SPI 外设配合 DMA 和精确时序控制机制实现单线协议物理层…...
