Android面试题库 - Activity(一) - 基础

简介: Activity生命周期什么是Activity是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。Activity的4种状态名称解释runningActivity处于前台,与用户...

Activity生命周期

什么是Activity

是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话、拍摄照片、发送电子邮件或查看地图等操作。

Activity的4种状态

名称 解释
running Activity处于前台,与用户有交互的情况下,此时Activity不会被回收
paused Activity被一个透明的Activity遮罩住,此时处于paused状态,如果内存紧张,会被回收
stopped Activity被另外一个Activity完全覆盖,就会处于stopped状态,内存紧张的情况下会被虚拟机回收
killed Activity已经被系统回收了

Activity的生命周期

img_5fbd28f1a459a8e220b1a0e0e369da3f.png
Activty的生命周期

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页面跳转到其他页面等。

目录
相关文章
|
5月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
126 6
|
5月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
46 3
|
5月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
45 3
|
6月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
92 4
|
5月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
39 0
|
7月前
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
207 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
6月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
94 2
|
5月前
|
Java 调度 Android开发
Android面试题之Kotlin中async 和 await实现并发的原理和面试总结
本文首发于公众号“AntDream”,详细解析了Kotlin协程中`async`与`await`的原理及其非阻塞特性,并提供了相关面试题及答案。协程作为轻量级线程,由Kotlin运行时库管理,`async`用于启动协程并返回`Deferred`对象,`await`则用于等待该对象完成并获取结果。文章还探讨了协程与传统线程的区别,并展示了如何取消协程任务及正确释放资源。
88 0
|
6月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
104 0
|
4月前
|
存储 缓存 算法
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!
本文介绍了多线程环境下的几个关键概念,包括时间片、超线程、上下文切换及其影响因素,以及线程调度的两种方式——抢占式调度和协同式调度。文章还讨论了减少上下文切换次数以提高多线程程序效率的方法,如无锁并发编程、使用CAS算法等,并提出了合理的线程数量配置策略,以平衡CPU利用率和线程切换开销。
面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了!

热门文章

最新文章

  • 1
    Android历史版本与APK文件结构
  • 2
    【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
  • 3
    【03】仿站技术之python技术,看完学会再也不用去购买收费工具了-修改整体页面做好安卓下载发给客户-并且开始提交网站公安备案-作为APP下载落地页文娱产品一定要备案-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 4
    【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
  • 5
    【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
  • 6
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
  • 7
    Cellebrite UFED 4PC 7.71 (Windows) - Android 和 iOS 移动设备取证软件
  • 8
    escrcpy:【技术党必看】Android开发,Escrcpy 让你无线投屏新体验!图形界面掌控 Android,30-120fps 超流畅!🔥
  • 9
    即时通讯安全篇(一):正确地理解和使用Android端加密算法
  • 10
    Android实战经验之Kotlin中快速实现MVI架构