1. Activity与Servlet的异同?

相同点:

  • 1.1 Activity、Servlet的职责都是向用户呈现界面
  • 1.2 Activity、Servlet的实例都是系统创建,方法都由系统进行回调
  • 1.3 Activity、Servlet都有自己的生命周期
  • 1.4 Actiivty、Servlet开发出来之后都需要进行配置

区别:

  • 2.1 Activity是窗口的容器,而Servlet生产的是窗口要显示的内容
  • 2.2 Activity的跳转主要是由Intent来控制的,Servlet的跳转主要是由URL地址来实现的

2. Activity的生命周期?

  • onCreate():当第一次进入某一个Activity的时候会调用该方法
  • onStart():当Activity被我们看见的时候就调用该方法
  • onRestart():当一个Activiy再次被打开的时候就会调用该方法
  • onResume():在Activity能获得用户焦点的时候就调用该方法
  • onPause():当Activity失去用户焦点的时候会调用该方法
  • onStop():当Activity完全被遮挡住的时候就会调用该方法
  • onDestory():当Activity被销毁的时候回调用该方法

3. Activity之间的跳转所经历生命周期?

  • 3.1 FirstActivity打开:

FirstActivity--->onCreate
         FirstActivity--->onStart
         FirstActivity--->onResume

  • 3.2 FirstActivity跳转到SecondActivity

FirstActivity--->onPause
        SecondActivity--->onCreate
        SecondActivity--->onStart
        SecondActivity--->onResume
        FirstActivity--->onStop

  • 3.3 SecondActivity返回到FirstActivity

SecondActivity--->onPause
        FirstActivity--->onReStart
        FirstActivity--->onStart
        FirstActivity--->onResume
        SecondActivity--->onStop
        SecondActivity--->onDestroy

4. Activity之间跳转的本质?

Activity之间的跳转切换实际就是在后台进行的一个压栈和弹栈的过程,手机屏幕上始终显示的是堆栈中最顶部的那个Activity,弹栈就意味着Activity会被销毁

  • 4.1 应用程序启动之后,运行第一个Activity之后,该Activity对象被压入到stack当中
  • 4.2 点击按钮后启动第二个Activity,该Actitivy对象被压入到Stack当中
  • 4.3 点击Back按钮,这时第二个Activity对象堆栈当中弹出
  • 4.4 在再次点击Back按钮之后,显示FirystActivity被从栈当中弹出来

5. Activity的四种启动模式有哪几种?

  • 5.1 standard:多例

模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中

  • 5.2 singleTop:栈顶单例

如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。
        浏览器添加书签的功能
        发送短信重复一百下,避免重复界面

  • 5.3 singleTask:单栈单例【同一个应用共享一个Activity】

如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。
     浏览器,节约内存空间

  • 5.4 singleInstance:多栈单例【多个应用共享一个Activity】

在一个新栈中创建该Activity实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity的实例存在于某个栈中,任何应用再激活Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
        有道词典,不管在哪个应用程序里面打开,只保证有一个相同的activity
        用户来电

6.SingleTask与SingleInstace之间的区别?

SingleTask:共享任务栈,整个任务栈只有一个实例,适用于应用的入口界面
SingleInstance:独享任务栈,整个系统只有一个实例,适用于需要和应用分离开的页面
android:taskAffinity=""
android:launchMode="singleTask"
结果:可以创建一个新的任务栈

android:taskAffinity=""
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);    
结果:可以创建一个新的任务栈

结论:两者的作用是等价的
注意事项:

  • 6.1 startActivityForResult启动的目标Activity的启动模式不能为SingleTask,否则有些机型会导致onActivityResult不回调
  • 6.2 SingleTop模式的activity在返回的时候设置mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)也可以达到SingleTast模式的效果,回调会走onNewInent方法
Intent mIntent = new Intent();
mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(mIntent);
  • 6.3 Activity的android:configChanges="orientation|keyboardHidden|screenSize"横竖屏切换不明感,可在onConfigurationChanged方法里作一些UI适配工作

注意了:orientation|screenSize两个设置缺一不可

7. 怎么通过Activity获取res文件下的资源

InputStream is = getResources().getAssets().open("car_move.jpg");
InputStream is = getResources().openRawResource(R.raw.simulated);

Android四大组件之Activity详解相关推荐

  1. Android四大组件之ContentProvider详解

    1. 为什么需要内容提供者contentProvider? 为不同的应用之间数据共享提供统一的访问接口,内容提供者的作用 把私有的数据给暴露出来 2. 内容提供者原理? 原理:可以把ContentPr ...

  2. android 之四大组件的Activity详解

    Activity的生命周期: Activity的四种基本状态: (1) 运行态(Running) Activity处在最前端,用户可见可获得焦点 (2) 暂停态(Paused) Activity处在最 ...

  3. Android四大组件之Service详解

    1. service是什么?及其生命周期? 在前台不可见,但是承担大部分数据处理工作(劳模),它和Activity的地位是并列的,区别在于:Activity运行与前台,Service运行于后台,没有图 ...

  4. Android四大组件之BroadcastReceiver详解

    1. 广播机制工作原理 ? 1.1 首先在需要发送信息的地方,把要发送的信息和用于过滤的信息(如Action.Category)装入一个Intent对象 1.2 然后通过调用 Context.send ...

  5. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

  6. Android四大组件之Activity(第一篇-简单使用)

    Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...

  7. Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)

    什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...

  8. 重温Android四大组件(一)—Activity的生命周期

    前言 四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了.但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心. 这里以& ...

  9. 第六课-Android四大组件之Activity

    Activity是Android四大组件之一,它是个控制类,主要控制界面的加载显示,用户交互处理,数据的获取,数据的传送等.在它的onCreate方法中的setContentView方法就是来加载一个 ...

最新文章

  1. iOS weak 自动置为nil的实现
  2. hongyi lee 作业1
  3. 辛湜推荐的数据库领域的一些学习材料
  4. 《互联网运营智慧》十一月进展
  5. 斐波那契数列的低效与高效解法 【转】
  6. android 高德地图 sh1,百度、高德地图获取发布版(Release)SHA1
  7. 文本框为空按钮不可点击
  8. Android 系统性能优化(28)---Android 性能优化工具集合
  9. Junit中的异常测试
  10. Android 小组件完整案例
  11. 学生成绩管理系统(C语言)
  12. 【华为云技术分享】从软件开发到 AI 领域工程师:模型训练篇
  13. 微信公众号程序开发接入流程
  14. Scala - 快速学习09 - 函数式编程:一些操作
  15. 在金融等重要行业的计算机系统中 通常采用,货币金融学题库
  16. 联网时显示已连接无法连接到服务器怎么办,路由器显示已连接不可上网怎么办?...
  17. 集成高德sdk查看交通路况
  18. vivado生成ltx文件命令_实验室自研工具Vivado Batch Mode Tool介绍!
  19. 为什么我的pycharm创建不了python_[新手向视频]新版PyCharm创建项目为什么会有问题...
  20. 海康大华宇视等等安防监控摄像头转成WebRTC流实现Web浏览器超低延迟无插件直播新方案

热门文章

  1. 测试小故事88:耍流氓
  2. UML类图、JAVA DesignMode 设计模式、设计原则
  3. 搞懂时钟管理,看这个就好啦~
  4. 任务计划自动备份文件或文件夹且以当前日期命名
  5. 新年愿望清单列好了吗?如何在桌面上添加便签计划清单
  6. Unity的VRTK捡拾物体学习笔记
  7. 海思sdk包以及交叉编译器安装
  8. svn启动停止重启等命令
  9. 绝地服务器维护7月5日,绝地求生7月5日几点能进游戏 吃鸡更新维护公告
  10. 支付宝对接源码php,thinkphp3.2.3 成功对接支付宝接口