1.什么是Android?

Android是一个以Linux为基础的开放源代码移动设备操作系统,

由Google领导和开发,目前世界上市场占有率最高,

它的创始人是Andy Rubin。

2.请说一下Android的系统架构(Android Architecture Layers)。

  • Android的系统架构有四层:Applications、FrameWork、Libraries、Linux Kernel。

  • "Applications层"就是平时我们用手机时看到的那些已经装在手机上的应用,比如联系人、短信、日历这些。

  • "FrameWork层"用于提供开发应用时所需要用到的API,包含Activity Manager、Content Providers、Resource Manager等等服务。

  • "Libraries层"包含两个方面,分别是Native Libraries 和 Android Runtime。Native Libraries通过一些C/C++库为Android系统提供SQLite、OpelGL 3D绘图、Webkit浏览器内核等等主要特性的支持,供Android系统的各个组件使用,这样开发者就可以在FrameWork层使用这些特性;Android Runtime提供一些核心库(Core Libraries),这样开发者就可以用Java语言来编写Android应用。每一个Android应用程序是Dalvik虚拟机中的实例,运行在他们自己独立的进程中。

  • "Linux Kernel层"用于为Android设备的各种硬件提供底层驱动,包含Display Driver、Camera Driver、USB Driver、Power Management等等。

关于Android的系统架构,可以参考两张图:

3.什么是Activity?请说一下Activity的基本用法。

Activity是一种包含用户界面的组件,主要用于和用户进行交互,

当Android应用运行的时候,它的Activity一般会充满把手机屏幕的空间都占满,

不过有的Activity也会以浮窗或者嵌入到其他Activity的形式呈现。

说起Activity的基本用法,我的印象就是以下内容:

  • 手动创建Activity:新建Android Project - 在向导中让系统不要帮忙创建Activity - 在src目录的包中新建一个继承Activity类的子类 - 重写onCreate方法 - 在res/layout目录中创建自己的视图文件activity_main.xml - 在Activity中setContentView(R.id.???) - 最后在AndroidManifest.xml文件中注册这个Activity -  运行应用即可

  • 绑定自定义视图:调用setContentView(),传入一个布局文件的id作为参数,即可给当前的Activity加载一个布局

  • 在当前Activity中启动另一个Activity:使用 startActivity(new Intent(当前Activity.this,目标Activity.class)); 启动另一个Activity

4.请说一下Activity的生命周期。

参考连接:官方Activity的描述

Android系统用"栈"来管理应用的Activity,栈是后进先出的数据结构,

当启动一个新的Activity它就会变成当前所要呈现的Activity(running Activity)而入到栈顶,

前一个Activity就会在它的下层,当例如按下Back键这个新的Activity出栈后,

前一个Activity又会变回running Activity回到栈顶。

一个Activity在它的生命周期中最多会有四种状态:运行(running)、暂停(paused)、停止(stopped)、被干掉(销毁,destroyed)。

  1. 正常显示出来的、用户看到的Activity就是running,也就是在栈顶的Activity;

  2. 如果突然来了个短信,以小弹窗的形式把running的Activity遮住了,失去了焦点,这时那个Activity就会变为paused;

  3. 如果在running的Activity点击一个按钮后,启动了一个新的Activity,彻底覆盖了在栈顶running的这个Activity,它就会变为stopped;

  4. 如果Activity处于stopped或paused状态,而系统又很需要内存,系统就有可能根据需要终止这样的Activity,就会被干掉。

备注:最后一个状态因为官方文档没有一个很明确的字眼描述,只是说是这样的情况,所以我自己理解为被干掉吧。

关于Activity的生命周期有七个方法贯穿其中:

 public class Activity extends ApplicationContext {protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onRestart();protected void onResume();protected void onPause();protected void onStop();protected void onDestroy();}

在Activity显示的过程依次会调用onCreate() - onStart() - onResume(),

销毁的过程依次会调用 onPause() - onStop()- onDestroy()。

示意图如下:

5.说一下Activity的生命周期七个方法的作用。

6.说一下Activity的启动模式。



转载于:https://blog.51cto.com/sesedese/1681837

关于Android学习要问的一些问题相关推荐

  1. Android学习建议

    已经有很多人问我Android要怎么学,之前qq上聊天感觉都是些只言片语,我想是时候总结一下,把自己走过的一些路分享给大家,希望对大家有一点点的帮助. 我接触Android也已经好几年了,现在由于公司 ...

  2. 解析底层原理!月薪20k+的Android面试都问些什么?深夜思考

    正文 Android行业主要问题是初级Android太多了,会写xml和Activity的程序员太多了,初中级程序员面临很大的竞争,现状也就偏于高级开发者.越来越多的初中级Android程序员找不到满 ...

  3. 阿里巴巴Android面试都问些什么?系列篇

    Google 为了帮助 Android 开发者更快更好地开发 App,推出了一系列组件,这些组件被打包成了一个整体,称作 Android Jetpack,它包含的组件如下图所示: 老的 support ...

  4. Android学习路线总结

    title: Android学习路线总结,绝对干货 tags: Android学习路线,Android学习资料,怎么学习android grammar_cjkRuby: true --- 一.前言 不 ...

  5. Android 系统(206)---Android 学习网站汇总

    Android 学习网站汇总 <DT><H3 ADD_DATE="1515811987" LAST_MODIFIED="0">技术博客( ...

  6. 黑客全家桶、文字提取利器、深度学习 500 问 | GitHub 热点速览

    作者 | HelloGitHub-小鱼干 来源 | HelloGitHub(ID:GitHub520) 摘要:一个程序员除了技术好,还得品位高,有什么比一个高颜值的 GUI 更能体现你品味的呢?roc ...

  7. Android学习小Demo(10)ToDoList的加强版

    前两天去超市逛东西,问老板娘这个东西多少钱,那个东西多少钱,但是一两分钟后就搞混了,当时就想,我不是写了一个todo的吗,可以再拍照放上去,这样就有对比啦! 于是兴冲冲地赶回家,把功能给实现了,虽然这 ...

  8. Android:学习路线总结,绝对干货

    转载请注明出处:http://blog.csdn.net/lowprofile_coding/article/details/51252781 一.前言 不知不觉自己已经做了几年开发了,由记得刚出来工 ...

  9. Android 学习资源收集

    在开始讲述之前,你应该先看一下世界各地的开发人员是如何推荐的,他们自己学习Android时又是用的什么资源.这里我们将Quora和Reddit上针对Android应用开发学习所推荐的优秀资源做了快速总 ...

最新文章

  1. 【Memcache】下载与安装
  2. 教育的本质是人点亮人
  3. 【EasyUI】DataGrid 合并单元格 - 使用实例
  4. ASP.NET Core Web 应用程序开发期间部署到IIS自定义主机域名并附加到进程调试
  5. ext 浅谈类的实例
  6. com.taobao.config.client.exception.ConfigClientException: cannot get serverlist, so exit jvm env=DEF
  7. SpringSecurity AbstractAuthenticationProcessingFilter
  8. mysql 5.6 json查询_mysql5.6及以下版本如何查询数据库里的json
  9. 平方差和交叉熵损失函数分别用在哪些场景?
  10. input 文本框和 img 验证码对齐问题
  11. PTA-1015——Reversible Primes
  12. SQL SERVER 2008 索引、数据存储基本理论【原创】
  13. 纽微特成立起因:申某账务有鬼,张某不干活怎么不说
  14. 【路径规划】基于matlab粒子群算法栅格地图路径规划【含Matlab源码 579期】
  15. 数据库课程设计报告——员工工资管理系统
  16. 《0~3岁孩子的 正面管教》——备忘
  17. 84小时,230台服务器,袋鼠云和客户一起全力阻击WannaCrypt蠕虫病毒
  18. 三星会议组织:八个必须,三个公式
  19. 重庆计算机专业在职研究生,重庆师范大学在职研究生计算机专业教学方式
  20. fiddler使用过滤、打断点方法

热门文章

  1. Js的cookie和session
  2. 计算文件大小与文件行数
  3. C++的RTTI基本原理
  4. Vue和React组件之间的传值方式
  5. 说说如何在 Spring 框架中使用 SpEL 表达式
  6. fusionjs 学习二 核心概念
  7. Linux学习笔记十七——Linux系统启动流程
  8. 用python写一个hello world程序
  9. ProcessOnLoading
  10. Suowei的ajax