Android面试题库 - Activity(一) - 基础
Activity生命周期
什么是Activity
是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。
Activity的4种状态
名称 | 解释 |
---|---|
running | Activity处于前台,与用户有交互的情况下,此时Activity不会被回收 |
paused | Activity被一个透明的Activity遮罩住,此时处于paused状态,如果内存紧张,会被回收 |
stopped | Activity被另外一个Activity完全覆盖,就会处于stopped状态,内存紧张的情况下会被虚拟机回收 |
killed | Activity已经被系统回收了 |
Activity的生命周期
Activity的四种启动场景
- Activity 启动:Activity启动 -> onCreate ->onStart->onResume
- 返回桌面:onPause->onStop
- 桌面重新打开:onRestart->onStart->onResume
- 退出Activity :onPuase->onStop->onDestroy
Activity的进程优先级
- 前台 处于与前台和用户有交互的,比如和Activity绑定的Service
- 可见 可见不可操作,
- 服务 service
- 后台 按Home返回桌面,进程切换至后台进程,根据内存情况回收
- 空
Android任务栈
后进先出
Activity启动模式
onNewIntent方法的调用时机
名称 | 解释 |
---|---|
standard | 标准模式 |
singleTop | 栈顶复用 |
singleTask | 任务栈单例 |
singleInstance | 单任务栈模式 |
四种模式详讲
standard
标准模式,即每start一个Activity都会创建一个实例,也是平常最常使用的一种模式。
singleTop
栈顶复用模式,即start的Activity已经是在栈顶了,就会直接进行复用实例,此时在intent中传递的数据会在onNewIntent方法中回调。如果目标Activity不在栈顶,即创建一个新的实例。
其应用场景为一般的推送消息详情:即受到推送通知,用户进行点击的时候的目标Activity会设置为singleTop模式,方便复用。
singleTask
任务栈单例模式,即一个任务栈中只会存在一个这样的实例。当start目标实例时候,不存在改实例即创建一个新的实例,如果存在,则会移除掉该实例上面所有的实例,让自己处于栈顶,且回调onNewIntent方法。
其应用场景为少数情况下销毁Activity:设置MainActivity为singleTask模式,当重新启动时候,他会销毁在他之前的所有Activity实例。
singleInstance
单任务栈模式,即该Activity独享一个Activity,且只有一个实例。如果已经启动该实例,再次启动将会回调onNewIntent方法。
App的入口
既然Android是基于Java语言的,而Java有main方法,那么Android有吗?Android的主入口在哪里?
答案:
有Main方法,main方法在ActivityThread类中的第 6041行 main(String[] args)
Scheme跳转协议
什么是Scheme跳转协议
scheme是一种页面内跳转协议,是一种非常好的实现机制,通过定义自己的scheme协议,可以非常方便的跳转到app的各个页面;
通过scheme协议,服务器可以定制化告诉app应该调换到哪个页面,可以冲通知栏消息定制化跳转页面,可以通过h5页面跳转到其他页面等。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
浅析APP控件:模态弹窗与非模态弹窗
浅析APP控件:模态弹窗与非模态弹窗 在手机app应用中各种格式的弹窗效果相信大家都看过,此次分享就来谈谈关于app弹窗设计以及弹窗的适用情景。 一、弹窗的定义 1、弹窗作用 弹窗是为了让用户回应,需要用户与之交互的窗口。 ==非模态弹窗一般被设计成用来告诉用户信息内容,而模态弹窗除了告诉用户信息内容外还需要用户进行功能操作。== 2、模态弹窗 会打断用户的操作行为,强制用户必须进行操作,否则不可以进行其他操作。(Alerts/dialog,Actionbar,Popover) 3、非模态弹窗 不会影响用户操作,用户可以不与回应,通常有时间限制,出现一段时间就会自动消失。(Toast/HUD,Snackbar) 二、弹窗分类 以下将以各类弹窗的含义、作用、适用来进行浅析 Alerts/Dialog:警告框与对话框 含义:意为警告、对话,跟弹窗属性非常吻合,就是紧急状况,打扰用户的行为。 剖析:iOS中警告框称之为Alerts,作用是用来传达重要信息,并伴随着需要用户进行操作。 iOS规范中,警告框包含的元素如下:标题(必选)、描述信息(可选)、输入框(可选)、按钮(必选),必须包含标题...
-
下一篇
开源计划之--Android绘图库--LogicCanvas
零、前言: 安卓图形绘制一直以来感觉都很繁琐 在html5时,我用JavaScript封装了一个HTML5的canvas库。 HTML5感觉和Android的canvas挺相似,所以考虑移植过来。 绘图库核心是用配置信息绘图,通过逻辑运算绘图 本篇会持续更新,记录LogicCanvas的成长历程 原理简单示意图: 绘制一个五角星的过程.png 引入 allprojects { repositories { ... maven { url 'https://jitpack.io' } } } implementation 'com.github.toly1994328:logic-canvas-android:0.01' 一、以一个五角星来引入 在自定义View的onDraw方法中:绘制外接圆半径100,内接圆半径50,填充色黄色的5角星 ZCanvas zCanvas = new ZCanvas(canvas); zCanvas.drawNStar( new Painter() .num(5)//角的个数,数字任意 .R(100f)//外接圆半径 .r(50f)////内接圆半径 五角...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案