【Android学习笔记】activity使用和相关的重要类

Android开发之Activity Android开发学习笔记。文中记录了Android开发中的三个常用组件:Activity(活动)、Broadcast(广播)、Service(服务),以及如何在组件之间传递消息数据。 阅读详情

>建立配置和使用Activity

  • activity能够提供许多不同的操作页面,它们做成Activity栈,当前活动的应用位于栈顶。

  • LauncherActivity&&ArrayAdapter

每一个列表项对应一个intent,用于保存启动不同的activity的相关信息。

intentForPostion()提供了位置和不同activity对应的信息,将列表项链接到制定的intent。

  • ExpandableListActivity&&ExpandableListAdapter

设置界面显示过程中,使用了适配器的相关函数,其中复写的函数能够自动调用生成相应的界面。

  • getChild()获得子字表的内容

    • getChildID()获得子表的id

    • getChildrenCount()获得子表的项目数量

    • TextView()获得每个子表的textView配置

    • getChildView()获得每个子表的textView内容

    • getGroup()获得主表

    • getGroupCount()获得主表的数量

    • getGroupId()获得主表的id

    • getGroupView()决定主表的外观

    • isChildSelectable()返回被选中的子表像

    • hasStableIds()返回id

当在ExpandableListActivity中定义Adapter时,这些函数必须都被复写,保证能够生成一个新的列表,就相当于XML对应的配置属性一样,这样才能完整的显示整个表格。

  • PreferenceActivity&&PreferenceFragment

    1. 实现了参数设置界面,让Fragment集成了PreferenceFragment

    2. 在onCreate中调用addPreferencFromResource()方法,加载制定的界面布局文件。

  • 在manifest.xml中配置多个Activity资源

    1. 配置多个Activity:

<activity android:name=“.MainActivity” android:label=“@string/app_name”
android:theme=“@style/AppTheme.NoActionBar”> <intent-filter> <action
android:name=“android.intent.action.MAIN” /> <category
android:name=“android.intent.category.LAUNCHER” /> </intent-filter>
</activity>

  • 1

    • 2

      • 3

      • 4

      • 5

      • 6

      • 7

      • 8

      • 9

      • 10

>启动和关闭Activity

  • 启动activity的两种方法

    • context.startActivity(intent)

    • context.startActivity(intent,int)

  • 关闭Activity的两种方法

    • context.finish()

    • context.finishActivity(int)

  • 代码示例

Intent intent = new Intent(MainActivity.this,SecondActivity.class);

startActivity(intent);

>使用Bundle向指定的activity传递数据

  • intent携带额外数据的方法

    • putExtras(Bundle)

    • getExtras()

    • putExtra()

    • getXxxExtra()

    • putXXX(String,XXX)

    • putSeriaLizable(String,Srializagle)

    • getXXX(String)

    • getSerializable(String,Serializable)

  • 使用bundle和intent机制向指定的activity传递数据的方法

    • 定义方法,向介质添加批数据并且将介质传递给目标activity

Person p = new
Person(name.getText(),toString(),passwd.getText().toString(),gender); Bundle
data = new Bundle(); data.putSerializable("person),p); Intent intent = new
Intent(MainActivity.this,ResultActivity.class); intent.putExtras(data);
startActivity(intent);

  • 1

    • 2

      • 3

      • 4

      • 5

      • 6

    • 使用方法,从传递过来的intent中提取数据

Intent intent = getIntent();Person p = (Person)
intent.getSerializableExtra(“person”);

  • 1

    • 2

>启动Activity并且获取返回结果

  • 当前的Activity启动另一个Activity获取它的结果并且返回到当前的Activity。

  • 实现方法

重写onActivityResult(int requestCode,int resultCode,intent
intent)方法(相当于一种回调方法)当被启动的Activity生命周期结束并且返回结果时,该方法将会被触发。

  • 实现过程

    1. 用特殊函数启动另外的activity

Intent intent = new Intent(MainActivity.this,ResultActivity.class);

intent.putExtras(data);

startActivityForResult(intent,0);

  1. 当activity结束时,触发onActivity函数,需要重写它。

    1. 在另外的activity中仍旧需要bundle和intent进行配合传递数据

      对类的补充:

Intent类(交互介质)

  • Intent类作用

每个应用程序都有若干个Activity组成,每一个Activity都是一个应用程序与用户进行交互的窗口,呈现不同的交互界面。因为每一个Acticity的任务不一样,所以经常互在各个Activity之间进行跳转,在Android中这个动作是靠Intent来完成的。你通过startActivity()方法发送一个Intent给系统,系统会根据这个Intent帮助你找到对应的Activity,即使这个Activity在其他的应用中,也可以用这种方法启动它。

  • Intent的定义:

Intent是Android系统用来抽象描述要执行的一个操作,也可以在不同组件之间进行沟通和消息传递。

Intent意图可以是明确的指定组件的名称,这样你可以精确的启动某个系统组件,比如启动一个Activity。它也可以是模糊的,没有指定组件名称,只要是能够匹配到这个Intent的应用都可以接收到,比如发送一个拍照Intent,所有的拍照应用都会响应。

  • Intent有以下几个属性:

动作(Action),数据(Data),分类(Category),类型(Type),组件(Compent)以及扩展信(Extra)。其中最常用的是Action属性和Data属性。

Bundle类(批数据,是一个键值对)

  • Bundle类的作用

Bundle主要用于传递数据;它保存的数据,是以key-value(键值对)的形式存在的。我们经常使用Bundle在Activity之间传递数据,传递的数据可以是boolean、byte、int、long、float、double、string等基本类型或它们对应的数组,也可以是对象或对象数组。当Bundle传递的是对象或对象数组时,必须实现Serializable
或Parcelable接口。下面分别介绍Activity之间如何传递基本类型、传递对象。

  • Bundle的定义和使用

    • 新建一个bundle类

view plain copy

Bundle mBundle = new Bundle();

  • bundle类中加入数据(key
    -value的形式,另一个activity里面取数据的时候,就要用到key,找出对应的value)

view plain copy

mBundle.putString(“Data”, “data from TestBundle”);

  • 新建一个intent对象,并将该bundle加入这个intent对象

view plain copy

Intent intent = new Intent();

intent.setClass(TestBundle.this, Target.class);

intent.putExtras(mBundle);

  • Bundle提供了各种常用类型的putxxx()/getxxx()方法,用于读写基本类型的数据。

Context类的(主体上下文)

  • Context类的定义

Interface to global information about an application environment. This is an
abstract class whose implementationis provided by the Android system. It allows
access to application-specific resources and classes, as well as up-calls for
application-level operations such as launching activities, broadcasting and
receiving intents, etc

  • Context使用场景

    1. 它描述的是一个应用程序环境的信息,即上下文。

    2. 该类是一个抽象(abstract
      class)类,Android提供了该抽象类的具体实现类(后面我们会讲到是ContextIml类)。

    3. 通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent信息

  • Context类图集成关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EedUqbTK-1687872462351)(media/a0889d3344d2955e66de11c0646a0a10.gif)]

context类图继承关系

  • Context相关的方法

    • getSystemService(String)获得系统级服务

    • startActivity(Intent)启动一个Activity

    • startService(Intent)启动一个service

    • getSharedPreferences(String, int)

  • Context什自己的理解

Context类相当于一个上下文环境,能够很好的统筹一个Activity、service或者app的资源和调度方式,他是负责指挥这些资源的类的接口,他能启动关闭一个app等。

Serializable类

序列化的内容补充

当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。
把Java对象转换为字节序列的过程称为对象的序列化,把字节序列恢复为Java对象的过程称为对象的反序列化。

  • Serializable接口的定义

为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object
states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。

  • 使用情况

    • 当你想把的内存中的对象状态保存到一个文件中或者数据库中时候;

    • 当你想用套接字在网络上传送对象的时候;

    • 当你想通过RMI传输对象的时候;

  • Parcelable和Serializable的区别

内存间数据传输时推荐使用Parcelable,activity间传输数据使用Parcelable,是Android特有功能,效率比实现Serializable接口高效,可用于Intent数据传递,也可以用于进程间通信(IPC)

保存到本地或者网络传输时推荐使用Serializable

Parcelable类

  • Parcelable类的作用

想要在两个activity之间传递对象,那么这个对象必须序列化,Android中序列化一个对象有两种方式,一种是实现Serializable接口,这个非常简单,只需要声明一下就可以了,不痛不痒。但是android中还有一种特有的序列化方法,那就是实现Parcelable接口,使用这种方式来序列化的效率要高于实现Serializable接口。不过Serializable接口实在是太方便了,因此在某些情况下实现这个接口还是非常不错的选择。

  • Parcelable类的使用情况

    • 永久性保存对象,保存对象的字节序列到本地文件中;

    • 通过序列化对象在网络中传递对象;

    • 通过序列化在进程间传递对象。

  • Parcelable接口定义

public interface Parcelable

{

//内容描述接口,基本不用管

public int describeContents();

//写入接口函数,打包

public void writeToParcel(Parcel dest, int flags);

//读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入

//为了能够实现模板参数的传入,这里定义Creator嵌入接口,内含两个接口函数分别返回单个和多个继承类实例

public interface Creator<T>

{

public T createFromParcel(Parcel source);

public T[] newArray(int size);

}

}

  • 实现序列化的步骤

    1. implements Parcelable

    2. 重写writeToParcel方法,将你的对象序列化为一个Parcel对象,即:将类的数据写入外部提供的Parcel中,打包需要传递的数据到Parcel容器保存,以便从
      Parcel容器获取数据

    3. 重写describeContents方法,内容接口描述,默认返回0就可以

    4. 实例化静态内部对象CREATOR实现接口Parcelable.Creator

基于Python批量获取过去某地某时的天气数据 此段代码为经Visual Weather API官网样例后修改。原代码返回数据格式为json,经测试json风速字段不可用,后改为返回数据格式为csv。若修改weather_api_endpoint,还可获取该地点的预测数据,但返回数据字段可能发生变化,请以官网文档为准。获取到的字段包括:平均温度、露点、湿度、风速、降雨量、能见度、云量、天气类型等。目的:已知某一地址,获取过去某一时间该地的天气数据,并能够批量运行。这一步也会有获取不到的时间和地点,因此为空白。此段代码为经百度地图api官网样例后修改。 阅读详情

相关推荐

SAP MM 物料描述MAKTX 40个字符不够用的问题处理

SAP物料描述表,长度40个字符一般情况下,40个字符在描述中也够用了,但是要加上规格之类的额外描述就不一定了,特别是对于辅助件-刀具。解决方案一:对maktx增强,换成CHAR80或者CHAR100的,但是风险较大,涉及到好多地方,另外SAP+ 算号器 也不支持。解决方案二:增强字段。内部顾问,建议在 那就在这里加一个字段,具体过程如下:1、创建域2、创建架构3、附加架构4、GUI 设置 5、后台设置6、MASS/MM17字段新增。过程1、创建域 SE112、创建结构 se11 3、MARA附加架构

GAVIN 4729

Android从入门到放弃—— 一、Activity详解1

门——Activity Activity是什么: Activity作为Andorid的四大组件之一,为用户提供了一个界面,即我们能看到的界面。相当于一张画画用的纸,我们可以在上面画任何我们想要的内容。 Activity的创建: 就像我们画画需要拿一张画纸铺在画板上一样,想要看到界面我们也需要创建一个Activity。创建的方法很简单,分为2步: 继承Activity类 在A...

1423

深度解析direct path write temp与ASM IO性能问题:Oracle 19.17视图查询优化指南

本文深度解析了Oracle 19.17版本中复杂视图查询出现`direct path write temp`与`ASM IO for non-blocking poll`性能瓶颈的根本原因。通过对比11.2.0.4版本的执行计划差异,文章提供了从CBO参数调整、存储层优化到SQL架构重构的完整实战调优指南,帮助DBA有效解决升级后的查询性能问题。

2y3u4i5o6p的博客 1100

Android Activity的启动模式

activity的启动模式是重要的一块内容,在面试中,常常来考Activity启动模式。activity的启动模式共有四种,standard、singleTop、singleTask、singleInstance。让我们一探究吧。

蓝家彬的博客 810

Windows 下 Codex MCP 服务配置全攻略:从环境搭建到实战避坑

本文详细介绍了在Windows系统下配置Codex MCP服务的完整流程与实战避坑指南。内容涵盖从Node.js环境搭建、Codex CLI安装,到核心配置文件config.toml的编写与解析,并重点解决了Windows平台特有的环境变量设置、MCP服务启动命令适配等关键难点,帮助开发者顺利完成从环境准备到编辑器插件连接的整个配置过程。

weixin_28826545的博客 2071

figma MCP + cursor如何将设计稿生成前端页面

Figma MCP配置与代码生成指南 本文详细介绍了如何在Cursor中配置Figma MCP(多上下文处理器)的完整流程:从获取Figma API密钥、设置MCP服务器配置,到添加代码生成规则。关键步骤包括生成Figm a个人访问令牌、配置cursor settings文件、启用MCP服务,以及设置代码规则(包含TypeScript/Vue技术栈规范、BEM命名规则等)。最后提供了将Figma设计稿转化为Vue页面的prompt模板,涵盖文件结构、图片处理、样式规范等具体要求,确保生成代码与设计稿高度一致

weixin_45644355的博客 2908

android程序退出当前activity的方法

Android程序有很多Activity,比如说主窗口A,调用了子窗口B,如果在B中直接finish(), 接下里显示的是A。在B中如何关闭整个Android应用程序呢?本人总结了几种比较简单的实现方法。   1. Dalvik VM的本地方法   android.os.Process.killProcess(android.os.Process.myPid())//获取PID   System...

baobaoupup 1753

YOLOv11改进策略【损失函数篇】| arXiv2025 TeLU双曲正切指数线性单元 强梯度防消失 + 解析光滑稳训练,极速提升收敛与泛化

本文记录的是。TeLU(Hyperbolic Tangent Exponential Linear Unit)通过。本文利用TeLU激活函数,以x⋅tanhex统一实现正区间强梯度加速收敛与负区间持续梯度避免死神经元,全程保持解析光滑与极低计算开销,,显著提升深度网络在分类、检测、分割、时序任务中的收敛速度、精度与泛化鲁棒性。

Limiiiing的博客 224

安卓问题汇总

1、写了简单的界面,报错 Error:Error converting bytecode to dex: Cause: Dex cannot parse version 52 byte code. This is caused by library dependencies that have been compiled using Java 8 or above. If you are u

猴子的博客 750

曲线最小二乘拟合基础

介绍曲线拟合的最小二乘原理,介绍了常规最小二乘和正交最小二乘算法,最后介绍了MathNet矩阵运算库的基本操作。

yh523的博客 1303

【AUTOSAR-COM】-5.2-“Deadline Monitoring超时监控”-2-基于IPdu实现

目录 1 在CFG中配置Deadline Monitoring超时监控 1.1 参数说明 1.2 生成代码差异 2 通过一段测试代码看Deadline Monitoring超时监控 3 使用CAN盒观察Deadline Monitoring实际测试效果 3.1 Case 1:ECU开始工作时,没有收到Frame 3.2 Case 2:ECU工作中,接收的Frame丢失、 4 小结 5 结尾 关键字: DM=Deadline Monitoring超时监控 ComFirstTime...

「汽车电子助手」的博客 1788

Android入门——四大组件之Activity启动模式

转载请注明出处:https://blog.youkuaiyun.com/eternally__/article/details/82496515 standrad singleTop singleTask singleInstance 在AndroidManifest.xml中通过中设置 &lt;activity android:name=".MainActivity" andr...

eternally__的博客 293

【GameFramework框架内置模块】8、文件系统(File System)

最近好忙,鸽了好久。不能颓废了,继续发力。今天分享的是GF框架的文件系统。首先,引用比较官方的说法:GF的FileSystem虚拟文件系统,使用类似磁盘存储的感念对零散的文件进行集中管理,优化资源加载时产生的内存分配,也可以对资源进行局部片段加载,极大的提升了资源加载的性能。通俗点讲就是,我这个模块就是加载磁盘文件的,优化加载时产生的内存分配。那么,它是怎么优化的呢?

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2452

【Activity】安卓Android开发中的Activity、Fragment、Adapter

我最近刚刚接触Android开发,对这个方面的开发可以说是一无所知,所以想着尝试开始理解。在这段时间的摸爬滚打里面,我发现了其中Activity、Fragment、Adapter三种非常常用,所以在这里进行一下我自己的理解。

weixin_67898144的博客 2792

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Android之获取当前Activity名称(activity管理类);

1.网络学习资源 https://blog.youkuaiyun.com/amberoot/article/details/80770698 2.自己写的acitivity管理类, 以后还会改动 public class MainActivity extends BaseActivity { @Override protected void onCreate(Bundle save...

果酱大师的博客 3469

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

activity的几个相关类

android  中主要对activity管理的几个相关类。 ActivityRecord:通常的的 我们用的activity都是以继承activity的形式出现,但是在系统中,每个                      activity都是以activity record的形式出现,这个类包涵了 activity的各种信息。 ActivityThread:负责管理并执行主线成中的

编程生活 2245

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

android activity 相关

Android activity 相关activity 生命周期1. 生命周期2. A启动Activity B生命周期是怎么走?3. onSaveInstance 和 onRestoreInstance4. 对于在onSaveInstanceState()与onPause()中的数据处理有什么区别?5. home键之后,activity的生命周期Activity的启动模式有哪些?Flag的作用 activity 生命周期 1. 生命周期 onCreate->onStart(可见)->onResu

qq_37220377的博客 1400

Android实战——Activity超详细学习笔记

一、Activity简介 Activity是四大组件中最重要的一个,也是平时开发中接触最多的。与Activity启动行为相关的就是它的启动模式,Standard、SingleTop、SingleTask、SingleInstance这4种launchMode相信大家不陌生。 OK,熟悉了4种launchMode后相信你已经对Activity任务栈有一些理解了,能应对一些常见的开发场景了。然而,除了4种launchMode,还有更复杂的控制Activity行为的方式,那就是给启动Activity的Intent

振华OPPO的博客世界 2334

安卓学习笔记2.1 Activity 概述

Activity 类是 Android 应用的关键组件,而 Activity 的启动和组合方式则是该平台应用模型的基本组成部分。在编程范式中,应用是通过 main() 方法启动的,而 Android 系统与此不同,它会调用与其生命周期特定阶段相对应的特定回调方法来启动 Activity 实例中的代码。移动应用体验与桌面体验的不同之处在于,用户与应用的互动并不总是在同一位置开始,而是经常以不确定的方式开始。

qq_41301333的博客 504

Android activity 相关知识点梳理

在正常情况下,Activity 的常用生命周期就只有如下 7 个:1.:表示 Activity 正在被创建,常用来初始化工作,比如调用 setContentView 加载界面布局资源,初始化 Activity 所需数据等;2.:表示 Activity 正在重新启动,一般情况下,当前 Acitivty 从不可见重新变为可见时,OnRestart 就会被调用;3.:表示 Activity 正在被启动,此时 Activity 可见但不在前台,还处于后台,无法与用户交互;4.

diuping20110926的博客 1267

安卓学习笔记:Activity

实习初期学习基础知识,对阅览文章内容进行整理性复述,仅用于个人学习记录。

weixin_45778397的博客 1281

14天学会安卓开发(第二天)Android程序设计基础activity和intent

14天学会安卓开发   作者:神秘的N (英文名  corder_raine) 联系方式:369428455(反馈) 交流群:284552167(示例,原文档下载) 版权为作者所有,如有转载请注明出处 目录 第二天Android程序设计基础... 31 2.1 深入了解安卓... 31 2.1.1 工程结构解析... 32

corder_raine的专栏 2426

Android Activity启动流程(三)–Activity启动相关类的类图

在介绍Activity的详细启动流程之前,先为大家介绍Activity启动时涉及到的类,这样大家可以有大概的了解,不至于在细节中迷失。 Activity启动时涉及到的类有IActivityManager相关类, IApplicationThread相关类,ActivityManagerService相关类。 IActivityManager相关类 Activity的管理采用b

luojiayuan4523的专栏 851

android中activity类的作用,Android Activity全面解析

从实习到现在,工作了也快一年了,期间过程也碰到和解决了不少的问题,我的为知笔记上也积累了许许多多零零散散的知识点。个人觉得还是有必要将这些零碎的知识点整体梳理总结一遍这样才能真正的转化成真正的技术积累。所以这个专题我主要就是对Android的一些常用知识点以及开发当中遇到的各种问题进行一些梳理与总结。首先,就从Android四大组件Activity开始。1.Activity生命周期方法完全解析ac...

weixin_39600447的博客 1084

Android Activity类详解

activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.ApplicationContext 4.android.app.Activity ...

chuange6363的博客 445

Android Application中的Context和Activity中的Context的区别

首先Activity.this和getApplicationContext()返回的不是同一个对象,一个是当前Activity的实例,一个是项目的Application的实例,这两者的生命周期是不同的,它们各自的使用场景不同,this.getApplicationContext()取的是这个应用程序的Context,它的生命周期伴随应用程序的存在而存在;而Activity.this取的是当前Activity的Context,它的生命周期则只能存活于当前Activity,这两者的生命周期是不同的。

2401_86391729的博客 1413
上一篇: 【Android学习笔记】Android布局属性大全
下一篇: 【Android学习笔记】Android数据存储于IO接口
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值