深入剖析Android Activity

android task and activity剖析 http://changeyouforever.iteye.com/blog/1160038 android:allowTaskReparenting     用来标记Activity能否从启动的Task移动到有着affinity的Task(当这个Task进入到前台时)——“true”,表示能移动,“false”,表示它必须呆在启动时呆在的那个Task里。     如果这个特性没有被 阅读详情

活动是最基本的android应用程序组件,应用程序中,一个活动通常是一个单独的屏幕,Activity代表—个用户所能看到的屏幕,Activity主要处理—个应用的整体性工作,对其概念及生命周期进行剖析叮加深对其了解,加强对其灵活应用。


1、  Android应用程序的组成


Android系统是Google公司开发的基于Linux平台的开源手机操作系统,该平台由操作系统、中间件、用户界面和应用软件组成,是首个为移动终端打造的开放和完整的移动软件。—个通过Android框架所创建的Android应用程序。有四种基本类型。


(1)          Activities。Activities类似于桌面系统下的独立应用程序,例如:office办公软件。Activity是由许多需要及时运行的可执行代码组成,用户或者操作系统都可以通过实例化。运行Activities。Activities可以与用户机型交互,并且可以通过使用query或Intent对象向其他的Activities或服务请求数据或服务。


许多Android可执行代码将在Activity的环境下执行。Activities通常相当于—个显乐器:每个Activity都有—个界面提供给用户。当—个Activity当前不再运行时,操作系统将其杀死以保护内存。


(2)Services。Services类似于桌面操作系统和服务器操作系统的服务或守护程序。Services

是由一些可执行代码组成,通过实例化运行在后台,并且直到手持设备关闭后才结束Services一般没有用户界面。


(3)Broadcast and Intent Receivers。这些接收器是对其他应用程序的服务请求作出响应。

—个广播信息接收器是在系统做大规模广播事件时作出响应。这个广播信息可以来自Android系统自身或者来自运行在该系统上的一些程序。—个Activitiy或者service给其他应用提供了执行—个Intent接收器来访问自己功能的途径,该Intent接收器是由一段可以向其他Activities请求数据或服务的可执行代码组成。请求Activity创建—个Intent,并由Android框架通过分析作出决定是哪个应用程序接收并应用它。Intents在Android中是—个关键结构元素,可以使从已存在的应用中创建新的应用,在你的应用程序中.你可以通过使用Intent对象与那砦可以提供你所需要的信息的其他应用程序和服务相瓦配合。


(4)Content providers。content提供器是用来创建与其他Activity和Service共享数据的对

象。一个content Provider使用—个用URI组成的标准接口来实现向其他应用程序请求数据,

即使那些应用程序可能不知道使用的足哪个Content Provider例如:当—个应用程序执行一

个Query对象来查找数据,它所执行的URI结构如下:

Content://contacts/people

操作系统依靠观察哪个应用程序将自己作为—个ContentProvider来提供URI.并且发送请求给对应的应用程序。如果不止一个Content Provider注册提供URl,操作系统将询问用户将使用哪个。—个应用程序没有要求必须使用所有的Android组件,但是一个优秀的应用程序将使用其提供的构建机制,这样就不会出现代码重复或者引用其他应用程序很困难的情况。URI和Intent一起为用户提供厂灵活的Android环境:你可以很简单的添加、删除和取代—个应用程序。并且在Intent和URI的松耦合配合下。可以保证所有的事情一起进行。


2、  Activity相关概念

—个Activity相当于手机的一屏,它能够获得焦点,用户一般都在它上面操作。几乎所有的activity都跟用户打交道,所以Activity类丰要负责创建—个窗口。可以通过调用setContentView(View)方法在Activity上放置UI组件。Activity除了通常作为一个全屏的窗口呈现给用户之外,它们还有其他的使用片法:


(1)作为一个浮动窗口,这可以通过设置theme属性windowsIsFloating来实现;


(2)嵌入其他的Activity,这使用Activity—Group来实现。Activity的子类通常要实现如下两个方法,也就是说,当你要自己创建一个activity的时候,一般需要实现的:


(1)onCreat(Bundle)。我们可以在该方法里初始化Activity通常,我们在这个方法里调用setContentView(int)来设置Activity的内容.这个方法的int类型的形参是—个布局资源的ID,我们在这个布局中就设计好了Activity的内容了。此外,使用findViewById(int)方法检索到我们要进行交互的widgets组件。


(2)onPause()。当用户离开当前activity的时候,我们就在这个方法里面处理,一般来说。就是处理用户所作的改变,譬如用户填写了一些数据,我们就在这个方法里提交这些数据进行保存,通常是保存到Content Providers。


3、Android活动Activity的生命周期

Android是围绕移动应用的唯一需求进行设计的。在特定情况下,android可以识别移动设备上受限制的资源(如内存和电量),以及提供相应的机制保护这些资源,这些机制在Android的Activity生命周期体现得很明显,定义了Activity从创建到销毁的过程状态和事件。

Android活动Activity是一个非常著名的生命周期.每个Android应用程序的活动都有几个状态,但开发者是不需要关心应用程序是什么状态,这全部由Android操作系统负责管理:开发者可以通过调用相关的方法获知到应用程序活动状态即将改变。:

onCreate(Bundler):活动Activity在第一次被创建时调用该方法,开发者可以在该方法中做一些初始化上作。比如创建用户界面,创建你的视图和打开Activity需要用到的所有数据文件。onCreate允许—个null参数,或者是—个由onSaveInstanceState()方法保存下的状态作为参数。onStart()表示该活动将要显示给用户。

onResume():当活动可以与用户交互时调用该方法。在此开发播放动画和音乐是—个很不错的时机。

onPause():当活动将要被放置到后台(background)运行时调用该方法,通常另一个活动被激活或启动到前段(foreground)时,在此时可以保存应用程序的状态。

onStop():当活动Activity在一段时间里用户不可见和需要时,将调用该方法。如果设备内存紧张时.可能不会调用这个方法,此时操作系统只简单的终端进行。

onRestart():当该方法调用时,标志该活动将重新从停止状态显示到前端。

onDestroy():当活动被销毁时调用该方法。当内存紧张时,系统不一定会调用onDestroy()这个方法。

onSaveInstanceState(Bundle):Android调用这个方法保存活动的先前状态,比如光标在文本编辑框中的化置。一般来说,我们是不需要重载这个方法的,因为系统缺省是自动保存用户界面所有的状态的。

那些没有运行在前端的活动可能会被停止,或者被Linux进程管理杀死进行,以为新的活动腾出更多的资源.这个经常发生的情况,因此开发者在设计程序之初就要重新考虑这个问题。在大多数情况下,onPause()活动中最后调用的方法.因此可以在这个方法里
手把手调试Altera FPGA远程升级:从ASMI扇区擦除到Remote Update IP配置的避坑实录 本文详细解析了Altera FPGA远程升级的全流程,重点介绍了Cyclone IV系列FPGA的ASMI扇区擦除和Remote Update IP配置的实战技巧。通过双镜像架构设计、ASMI IP核优化配置及Remote Update IP的隐藏参数设置,帮助开发者避免常见陷阱,提升远程升级的可靠性和效率。 阅读详情

相关推荐

算法设计与分析 0-1背包问题 动态规划解法【超详细】

0-1背包问题 问题描述 给定i个物品和一个容量为的背包,物品的重量是Wi,其价值为Vi 物品个数为i,背包容量为C。 如何选择装入背包内的物品,使得装入背包中的物品的总价值最大? 其中,每种物品只有全部装入背包或不装入背包两种选择。 物品不能分割,不能重复使用。 动态规划算法思路 首先建立一个数组B[i][c],最上面一行表示背包容量,最左边一列表示物品编号,中间填充的数值表示当当前背包容量为C...

寒泉 4万+

Android 四大组件(一)Activity详解

Android四大基本组件分别是Activity 活动(界面),Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器,他们都在AndroidManifest.xml 中,都有生命周期。 1.Activity 活动界面的生命周期 onCreate() onStrat() onResume() onPurse() onStop() onDistory() ......

门徒07的博客 2550

DroidGuard虚拟机逆向解析:指令集、密钥派生与反调试机制

DroidGuard是Google在Android生态中部署的轻量级定制虚拟机,用于设备完整性校验。其核心原理是通过自解释字节码、多层混淆指令集与动态密钥派生机制,在ART运行时构建静默安全沙箱。技术价值在于规避传统API检测盲区,实现高鲁棒性环境感知;典型应用场景包括金融SDK风控、Play Services可信启动及合规性审计。本文深入拆解其4字节指令编码规则、基于设备指纹的三阶段密钥派生(SHA256→Feistel→AES)、以及五层反调试体系(ptrace快照、时间差分、内存页探测、指令流校验、服

weixin_32736961的博客 587

【Android】四大核心应用程序组件之activity

目录 1. Activity简介 2. Activity状态 Activity四大基本状态 1.活动状态(running) 2.暂停状态(paused) 3.停止状态(stopped) 4.死亡状态 3. Activity生命周期 4. Activity传递数据 5. Activity处理返回结果 6. ActiviActivityty运行时屏幕方向与显示方式 屏幕方向 ...

朱砂绛的博客 589

强化学习优化多目标冲突推理的决策过程设计

1. 背景介绍 强化学习(Reinforcement Learning,RL)作为机器学习的一个重要分支,近年来在计算机科学和人工智能领域取得了显著的进展。其核心思想是通过试错来学习最优策略,从而在复杂的环境中实现目标。然而,在多目标冲突推理(Multi-Objective Conflict Reasoning,MOCR)问题上,强化学习面临着诸多挑

AI天才研究院 1512

基于Python的IMF经济数据爬取与分析:从入门到实战

本文详细介绍了如何使用Python爬取国际货币基金组织(IMF)的经济数据,包括最新的爬虫技术、反反爬策略、数据解析与存储方法。文章从IMF数据源分析开始,逐步讲解如何构建一个完整的爬虫系统,并提供了详细的代码实现和优化建议。通过本文,读者将掌握爬取复杂国际组织数据的关键技术,并能将这些技术应用于其他类似的数据获取场景。关键词:Python爬虫、IMF数据、经济数据获取、数据清洗、反爬策略IMF Data (data.imf.org) - 主要数据门户。

2201_76125261的博客 1439

【Android】安卓四大组件之活动(Activity) 详解:从基础到进阶

在安卓应用开发的世界里,Activity 作为安卓四大组件之一,是用户与应用进行交互的重要窗口,它承载着应用的界面展示与用户操作响应功能。无论是打开一款 APP 看到的主界面,还是点击按钮后弹出的新页面,都是 Activity 在发挥作用。本文将深入剖析 Activity,带你全面了解它的原理、使用方法及进阶技巧

m0_59734531的博客 3872

学习QT之应用程序打包发布

一、编译QT程序(release编译) 二、将release文件夹中的可执行文件复制到一个空的文件夹中 三、使用windeployqt打包工程 切换到可执行文件路径,执行windeployqt xxx.exe: 然后就会将程序所需要用到的资源以及库文件生成到可执行文件路径下: 此时应用程序就可以点击运行了。 四、使用Enigma Virtual Box封包(将文件夹内的文件集成为单可执...

贝勒里恩的博客 762

关于Activity这一篇就够了

展望未来,随着Android系统的不断发展和用户需求的不断变化,我们期待Android系统在Activity方面提供更多的新特性和优化措施,为开发者创造更加便捷、高效和安全的开发环境。总之,Activity是Android应用开发中不可或缺的一部分,它提供了丰富的功能和灵活的机制,用于创建和管理用户界面,处理用户的交互操作,以及与其他组件进行通信。同时,随着Android系统的不断发展和用户需求的不断提高,开发者还需要不断学习和探索新的技术和方法,以提高应用的性能和质量。

VitorLiu的博客 2354

PLC集群管理:C#上位机实现10台以上分布式PLC的集中监控与指令下发

本文介绍了一套基于C# WPF开发的PLC集群管理系统,用于解决现代工业自动化产线中分布式PLC监控难题。系统采用三层解耦架构,支持100台以内不同品牌PLC的集中管理,具备批量数据采集、指令下发、实时报警等功能。核心创新点包括:1)基于异步IO的连接池管理;2)统一通信接口设计;3)寄存器合并优化算法;4)三级优先级指令队列。实际应用表明,系统数据采集延迟低于100ms,指令下发成功率99.9%,有效解决了传统单PLC监控模式存在的效率低下问题。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 507

LangChain .NET:C#开发者构建AI应用的RAG框架与实战指南

大语言模型(LLM)作为当前人工智能的核心技术,通过深度学习海量文本数据,掌握了强大的语言理解和生成能力。其原理基于Transformer架构,通过自注意力机制捕捉长距离依赖关系,从而实现对复杂语义的建模。这一技术价值在于能够将非结构化的自然语言转化为可计算、可推理的表示,为各类智能应用提供认知基础。在实际工程实践中,LLM常被应用于构建检索增强生成(RAG)系统和AI智能体(Agent)。RAG通过结合外部知识库检索与LLM生成,有效提升了问答的准确性和事实性,是构建企业知识库、智能客服等场景的关键技术。

weixin_42538175的博客 705

Android_Activity_Activity详解

Activity是一个应用组件,用以提供屏幕的交互界面。一个App通常包含多个Activity,其中一个特殊的Activity被指定为main Activity,当用户首次启动该App时,main Activity被首先呈现。一个Activity A可以启动新的Activity B,Activity A将被压入返回栈中,当用户按下后退键退出Activity B后,Activity A将重新获得焦点。

zimo2013的技术博客 9562

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android中关于Activity的setContentView方法的剖析

前言 最近看了Android中,Activity->ViewGroup->View的事件分发机制,于是顺带就看了下setContentView方法的源码。在这里和大家分享一下我的个人所得。 正文 public void setContentView(@LayoutRes int layoutResID) { getWindow().setContentView(...

u010257931的博客 465

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

解锁Android Activity:从原理到实战的深度剖析

Activity 是 Android 应用程序四大组件之一,是一种可以包含用户界面的组件,主要用于和用户进行交互。在 Android 应用的架构中,Activity 处于核心位置,是应用与用户交互的直接载体。它与其他组件,如 Service(服务)、BroadcastReceiver(广播接收器)和 ContentProvider(内容提供者)密切协作,共同构建起功能丰富的应用程序。

顾林海 5035

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

安卓分屏下Activity启动其他Activity为啥也在分屏下?-framework深入剖析

1、对于ActivityRecord来说相对非常简单,就是ActivityRecord的windowmode跟着Task混就可以了,Task的WindowMode是啥就是啥2、针对新创建的Task情况有点不一样,他们和启动这个新建Task的sourceTask有关系,如果sourceTask里面是分屏相关的task那么新建Task的的Parent就会变成和sourceTask的一样的rootTask,否则就是TaskDisplayArea即没有rootTask。本文章更多详细代码和资料需要购买课程获取。

learnframework的博客 1521

从Android 6.0源码的角度剖析Activity的启动过程

转载请声明出处: https://blog.youkuaiyun.com/AndrExpert/article/details/81488503 在从Android 6.0源码的角度剖析Window内部机制原理文章中,我们详细剖析了Android Window的内部工作机制,了解到每一个Activity都对应着一个Window,Activity的视图(View)都是依附在Window来呈现的,Wind...

老蒋也疯狂 2303

用 Loader 让 Presenter 跨越 Activity 重建:Android Studio MVP 模板 PresenterLoader 源码剖析

**Android Studio MVP 模板**(Android MVP template for Android Studio)内置了一套让 **Presenter 在屏幕旋转、Activity 重建后依然存活**的机制:核心就是用 Android 的 **Loader 框架** 包裹 Presenter,通过模板中的 **PresenterLoader** 类实现。本文带你看懂这套 MVP

gitblog_00797的博客 631

android窗体加载过程剖析之一Activity的初始化

本来只打算写一篇,后来发现这一块实在太大。关系也比较复杂。只好分成一系列,内容各有侧重,主要是研究ActivityThread, Activity,Window,WindowManager,ViewRoot之间初始化各是怎么衔接起来的。还有一些内容特别是Native的部分还没弄清楚,所以是从ActivityThread类开始的。 之前在跟事件的分发机制时,是从WindowManagerImpl的

lilybaobei的专栏 8603

玩转Android之Activity详细剖析

本文主讲了什么是Activity,它的生命周期,不对的操作,调用了什么函数。以及不同的Activity之间的跳转、数据传递等。         Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。它是 android 应用程序的基本功能单元。Activity 本身是没有界面的。所以activity类创建了一个窗口,开发人员可以通过setContentView(View)接

可口可乐的博客 425

Android 剖析Activity管理栈

activity栈一直以来总有点不清晰的感觉,今天就彻底的梳理一下。        在android中,一个activity组件可以激活另一个activity组件(可能属于另一个应用程序)。        若新的被激活的activity组件属于另一个应用程序,则那个activity组件会运行在那个应用程序的进程中,但是从用户的角度来看,好像就是属于本应用程序一样。Android是通过将之前的act

Army_Jun的博客 1215

android Activity 四种启动模式剖析

这是正式写的第一篇技术博客,之前很多东西都是放在自己的有道云笔记里,一来感觉很多时候写东西只是作为自己思路梳理之用,并不系统完备。二来很多东西都是循序渐进,理解上可能存在偏差,担心把别人带沟里去。但是慢慢发现,技术的东西还是应该拿出来跟大家分享的。不过应该里面还是有很多坑的,还请大家斧正。     android四种启动模式分别为,Standard标准模式, singleTop栈顶复用模

qq_34821732的博客 431

【移动开发】Android中Activity剖析

又到了暑假,大四的走了,我们理所当然成为了学校的老大,哈哈!今年不打算回家了,在学校和校友一起参加比赛做项目。好久就有写博客的冲动,但老是被各种事情所打扰,今天终于考完试了,于是在安静的宿舍开始提笔写起我的第一篇博客。写博客的目的主要是:总结以下这一年多来接触Android开发中所学到的知识,以此来督促自己不断地前进学习(废话比较多。。。此段可以...

weixin_34293141的博客 108

用 Rust 和 gb28181-rs 实战 GB28181 设备注册与保活

视频监控系统的互联互通离不开统一的国标协议。GB28181 作为安全防范视频监控联网的核心技术规范,明确了基于 SIP 的信令交互与媒体传输标准。任何摄像头、NVR 或下级平台要接入国标上级平台,都必须先完成设备注册——通过 REGISTER 请求和摘要鉴权建立信任关系,再通过心跳保活维持在线状态。Rust 凭借内存安全、高性能和低资源占用,成为边缘网关设备接入的优选语言。借助 gb28181-rs 这类开源协议栈,可以快速封装注册状态机、定时重传和目录上报等工程细节,大幅降低对接成本。本文以实战方式拆解注

weixin_34080951的博客 350
上一篇: Back Stack学习之Android退出方法小结
下一篇: 如何在Android应用程序中使用传感器模拟器
pku_android
博客等级 码龄15年 450粉丝 151原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值