Android面试题整理
安卓面试题
![安卓面试题](https://img.taocdn.com/s3/m/38e6844053ea551810a6f524ccbff121dc36c516.png)
安卓面试题一、安卓基础1. 请简述Android操作系统的架构。
Android操作系统采用分层架构设计,主要包括应用层、应用框架层、系统运行库层、Android运行时环境和Linux内核层。
应用层包含各种用户安装的应用程序;应用框架层为应用程序提供高级API接口;系统运行库层包含Android系统的各种C/C++库;Android运行时环境主要是指Dalvik虚拟机,负责运行应用程序;Linux内核层则负责底层的硬件驱动和资源管理。
2. 什么是Activity?请说明其生命周期。
Activity是Android中一个重要的组件,代表了一个单一的屏幕,用户可以在其中进行交互。
它的生命周期主要包括以下几个状态:onCreate()、onStart()、onResume()、onPause()、onStop()和onDestroy()。
这些状态对应Activity的不同阶段,开发者需要根据这些生命周期来管理Activity的创建、恢复、暂停、停止和销毁等操作。
3. 请解释什么是Intent,并举例说明其用途。
Intent是Android中用于组件间通信的一种机制。
它可以用来启动Activity、发送广播、启动服务等。
例如,当用户点击一个按钮查看详情时,可以通过Intent启动一个新的Activity来展示详细信息。
二、安卓开发1. 请描述如何创建一个新的Android项目。
首先,需要安装并打开Android Studio。
然后,选择“Create NewProject”选项,输入项目名称、保存位置、语言(Java/Kotlin)和最低API等级等信息。
接着,选择相应的模板,如Empty Activity、Login Activity等,最后点击“Finish”创建项目。
2. 请解释如何使用ListView来显示列表数据。
ListView是Android中用于显示垂直滚动列表的控件。
首先,在布局文件中添加ListView组件。
Android面试题
![Android面试题](https://img.taocdn.com/s3/m/85eeddd8c1c708a1284a4492.png)
1. 什么是Activity?四大组件之一,一般的,一个用户交互界面对应一个activitysetContentView() ,// 要显示的布局, activity 是Context的子类,同时实现了window.callback和keyevent.callback, 可以处理与窗体用户交互的事件.button.setOnclickLinstener{}我开发常用的的有ListActivity , PreferenceActivity ,TabAcitivty等…如果界面有共同的特点或者功能的时候,还会自己定义一个BaseActivity.进度对话框的显示与销毁 doubanservice2. 请描述一下Activity 生命周期。
生命周期描述的是一个类从创建(new出来)到死亡(垃圾回收)的过程中会执行的方法..在这个过程中会针对不同的生命阶段会调用不同的方法Activity从创建到销毁有多种状态,从一种状态到另一种状态时会激发相应的回调方法,这些回调方法包括:oncreate ondestroy onstop onstart onresume onpause其实这些方法都是两两对应的,onCreate创建与onDestroy销毁;onStart可见与onStop不可见;onResume可编辑(即焦点)与onPause;对话框的弹出, Activity.this对话框是activity的一部分.这6个方法是相对应的,那么就只剩下一个onRestart方法了,这个方法在什么时候调用呢?答案就是:在Activity被onStop后,但是没有被onDestroy,在再次启动此Activity时就调用onRestart(而不再调用onCreate)方法;如果被onDestroy了,则是调用onCreate方法。
最后讲自己项目中的经验,比如说豆瓣客户端每次进入某个界面的时候都要看到最新的数据,这个刷新列表的操作就放在onStart()的方法里面.fillData() 这样保证每次用户看到的数据都是最新的.多媒体播放, 播放来电话. onStop() 视频, 视频声音设置为0 , 记录视频播放的位置mediaplayer.pause();onStart() 根据保存的状态恢复现场. mediaplayer.start();在读文档的时候还发现 activity还有两个方法 onPostResume() 和 OnPostCreate()这两个生命周期的方法,不过开发的时候没有用到过.3. 两个Activity之间跳转时必然会执行的是哪几个方法。
常见Android面试题及答案(详细整理)
![常见Android面试题及答案(详细整理)](https://img.taocdn.com/s3/m/5a72a8d19f3143323968011ca300a6c30c22f17a.png)
常见Android面试题及答案(详细整理)1. 请描述一下Activity 生命周期。
答: 如下图所示。
共有七个周期函数,按顺序分别是: onCreate(), onStart(), onRestart(), onResume(), onPause(),onStop(), onDestroy()。
onCreate(): 创建Activity时调用,设置在该方法中,还以Bundle 的形式提供对以前存储的任何状态的访问。
onStart(): Activity变为在屏幕上对用户可见时调用。
onResume(): Activity开始与用户交互时调用(无论是启动还是重新启动一个活动,该方法总是被调用。
onPause(): Activity被暂停或收回cpu和其他资源时调用,该方法用户保护活动状态的,也是保护现场。
onStop(): Activity被停止并转为不可见阶段及后续的生命周期事件时调用。
onRestart(): Activity被重新启动时调用。
该活动仍然在栈中,而不是启动新的Activity。
1、完整生命周期: 即从一个Activity从出现到消失,对应的周期方法是从onCreate()到onDestroy()。
2、可见生命周期: 当Activity处于可以用户看见的状态,但不一定能与用户交互时,将多次执行从onStart()到onStop()。
3、前景生命周期: 当Activity处于Activity栈最顶端,能够与其他用户进行交互时,将多次执行从onResume()到onPause()。
2. 两个Activity之间跳转时必然会执行的是哪几个方法。
答: 两个Activity之间跳转必然会执行的是下面几个方法。
onCreate()//在Activity生命周期开始时调用。
onRestoreInstanceState()//用来恢复UI状态。
onRestart()//当Activity重新启动时调用。
安卓面试题及答案详解版
![安卓面试题及答案详解版](https://img.taocdn.com/s3/m/27054c58eef9aef8941ea76e58fafab069dc44c1.png)
安卓面试题及答案详解版1. 问题:什么是Android操作系统?答案: Android操作系统是一种基于Linux内核的开源操作系统,主要用于触屏移动设备,如智能手机和平板电脑。
它由Google公司开发并发布,允许设备制造商和开发者自由地修改和分发。
2. 问题:请解释Android的架构。
答案: Android架构从下到上分为四个层次:- 应用层:包含用户界面和应用程序。
- 应用框架层:提供应用程序开发接口(API)。
- 运行时环境层:包括Android核心库和Android运行时环境。
- Linux内核层:提供底层的硬件抽象层、内存管理、进程管理等功能。
3. 问题: Android应用是如何打包的?答案: Android应用通常使用APK(Android Package)格式进行打包。
APK文件是一个压缩文件,包含应用的代码、资源、资产、库和AndroidManifest.xml文件。
4. 问题:什么是Activity?答案: Activity是Android应用程序中的基本构建块,用于定义用户界面和用户交互。
每个Activity都是一个独立的屏幕,用户可以与之交互。
5. 问题:请解释Intent的概念。
答案: Intent是Android中用于请求操作的抽象描述符。
它可以用于启动Activity、启动服务或广播信息。
Intent可以显式地指定目标组件,也可以隐式地通过Intent Filter来匹配。
6. 问题:如何在Android中处理网络请求?答案:在Android中处理网络请求通常使用HTTP客户端库,如OkHttp或Retrofit。
这些库提供了简化的API来发送HTTP请求和接收响应。
7. 问题:解释Android中的Context对象。
答案: Context是Android中一个非常关键的类,它允许访问应用程序环境的全局信息。
Context可以用于启动Activity、获取资源、启动服务等。
Android面试题汇总
![Android面试题汇总](https://img.taocdn.com/s3/m/5fa91bbee45c3b3566ec8bbe.png)
Android面试题汇总1、什么是Activity?2、请描述一下Activity 生命周期3、横竖屏切换时候Activity 的生命周期。
4、如何将一个Activity 设置成窗口的样式。
5、你后台的Activity 被系统回收怎么办?6、如何退出Activity?如何安全退出已调用多个Activity 的Application ?7、同一个程序,但不同的Activity 是否可以放在不同的Task 任务栈中?8、Activity 怎么和service 绑定,怎么在activity 中启动自己对应的service?9、什么是Service 以及描述下它的生命周期。
10、Service 有哪些启动方法,有什么区别,怎样停用Service?11、什么是IntentService?有何优点?12、什么时候使用Service?13、请描述一下Intent 和Intent Filter。
14、Intent 传递数据时,可以传递哪些类型数据?15、说说Activity,Intent,Service 是什么关系。
16、请描述一下Broadcast Receiver。
17、在manifest 和代码中如何注册和使用broadcast receiver18、请介绍下ContentProvider 是如何实现数据共享的。
19、为什么要用ContentProvider?它和sql 的实现上有什么差别?20、请介绍下Android 中常用的五种布局。
21、请介绍下Android 的数据存储方式。
22、谈谈UI 中,Padding 和Margin 有什么区别?23、widget 相对位置的完成在antivity 的哪个生命周期阶段实现。
24、请解释下在单线程模型中Message、Handler、Message Queue、Looper 之间的关系。
25、AIDL 的全称是什么?如何工作?能处理哪些类型的数据?26、对android 虚拟机的理解,包括内存管理机制垃圾回收机制。
android面试整里大全.doc
![android面试整里大全.doc](https://img.taocdn.com/s3/m/d0420fdd81c758f5f61f67cb.png)
1、Android的四大组件是哪些,它们的作用?答:Activity:Activity是Android程序与用户交互的窗口,是Android 构造块中最基本的一种,它需要为保持各界面的状态,做很多持久化的事情,妥善管理生命周期以及一些跳转逻辑service:后台服务于Activity,封装有一个完整的功能逻辑实现,接受上层指令,完成相关的事物,定义好需要接受的Intent提供同步和异步的接口Content Provider:是Android提供的第三方应用数据的访问方案,可以派生Content Provider类,对外提供数据,可以像数据库一样进行选择排序,屏蔽内部数据的存储细节,向外提供统一的接口模型,大大简化上层应用,对数据的整合提供了更方便的途径BroadCast Receiver:接受一种或者多种Intent作触发事件,接受相关消息,做一些简单处理,转换成一条Notification,统一了Android的事件广播模型2、请介绍下Android中常用的五种布局。
常用五种布局方式,分别是:FrameLayout(框架布局),LinearLayout (线性布局),AbsoluteLayout(绝对布局),RelativeLayout(相对布局),TableLayout (表格布局)。
一、FrameLayout:所有东西依次都放在左上角,会重叠,这个布局比较简单,也只能放一点比较简单的东西。
二、LinearLayout:线性布局,每一个LinearLayout里面又可分为垂直布局(android:orientation="vertical")和水平布局(android:orientation="horizontal" )。
当垂直布局时,每一行就只有一个元素,多个元素依次垂直往下;水平布局时,只有一行,每一个元素依次向右排列。
三、AbsoluteLayout:绝对布局用X,Y坐标来指定元素的位置,这种布局方式也比较简单,但是在屏幕旋转时,往往会出问题,而且多个元素的时候,计算比较麻烦。
70道Android面试题
![70道Android面试题](https://img.taocdn.com/s3/m/f70295801eb91a37f0115c29.png)
70道Android面试题70道Android面试题(大全)1.GC是什么? 为什么要有GC?GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
2.XML包括哪些解释技术,区别是什么?DOM和SAXDOM将文档解析成一颗文档树,可在节点上进行遍历、增加、修改和删除。
一次性读入内存,对内存消耗大。
SAX至上而下解析文档,以事件进行驱动。
不会一次性读入内存,对内存消耗小,不能任意读取节点,并且不能对节点进行增加、修改和删除。
3.switch语句能否作用在byte上,能否作用在long上,能否作用在String上?switch能作用在byte、char、short和int上,JDK1.7后可以作用在String上。
4."=="和equals方法究竟有什么区别?==和equals都可以比较地址。
==是运算符,equals是方法,方法可以通过重写改变其行为,如String的equals就是比较字符串内容。
5.构造方法能否被重写和重载?构造方法不能被重写但是能被重载。
6.面向对象的特征有哪些?封装、继承、多态和抽象。
7.抽象类和接口的区别?1).抽象类是abstract class修饰,接口是interface修饰。
2).抽象类可以有任意类型的属性,接口只能有静态常量修饰的属性。
3).抽象类可以有普通方法和抽象法方法,接口的方法都是抽象方法。
4).抽象类和接口都不能实例化,但是抽象类有构造方法,接口没有构造方法。
5).抽象类只能单根继承,接口可以多重实现。
8.内部类可以引用它的包含类的成员吗?有没有什么限制?可以引用。
如果需要指定当前类时要用外部类.this来引用。
android_面试题
![android_面试题](https://img.taocdn.com/s3/m/243625037cd184254b35352b.png)
1、android线程与线程之间(一般偶的是主线程和子线程之间),进程与进程之间,应用程序之间的是怎样通信的?线程之间利用handler实现,.通过绑定在主线程上的handler对子线程的通知;进程之间用到AIDL实现;应用程序之间用BroadcastReceiver.2、IntentService有何优点?Acitivity的进程,当处理Intent的时候,会产生一个对应的Service;Android的进程处理器现在会尽可能的不kill掉你;非常容易使用3、如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?重写onSaveInstanceState()方法,在此方法中保存需要保存的数据,该方法将会在activity被回收之前调用。
通过重写onRestoreInstanceState()方法可以从中提取保存好的数据4、如何将一个Activity设置成窗口的样式。
<activity>中配置:android :theme="@android:style/Theme.Dialog"另外android:theme="@android:style/Theme.Translucent" 是设置透明5、如何退出Activity?如何安全退出已调用多个Activity的Application?对于单一Activity的应用来说,退出很简单,直接finish()即可。
当然,也可以用killProcess()和System.exit()这样的方法。
对于多个activity,1、记录打开的Activity:每打开一个Activity,就记录下来。
在需要退出时,关闭每一个Activity即可。
2、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
3、递归退出:在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
android开发面试题目(3篇)
![android开发面试题目(3篇)](https://img.taocdn.com/s3/m/48a0b0353d1ec5da50e2524de518964bce84d25f.png)
第1篇第一部分:Android基础1. Android开发环境搭建- 请简要描述Android开发环境搭建的步骤,包括安装Android Studio、配置SDK、模拟器等。
2. Android系统架构- 请简述Android系统的架构,包括四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的作用和相互关系。
3. Activity生命周期- 请描述Activity的生命周期方法,包括onCreate、onStart、onResume、onPause、onStop、onDestroy等,并说明它们在何时被调用。
4. Intent- 请解释Intent的概念和作用,并说明如何创建和使用Intent进行组件间的通信。
5. Service- 请描述Service的生命周期方法,并说明如何创建一个前台Service和后台Service。
6. BroadcastReceiver- 请解释BroadcastReceiver的概念,并说明如何注册、发送和接收广播。
7. ContentProvider- 请解释ContentProvider的概念,并说明如何实现数据的共享。
8. AndroidManifest.xml- 请解释AndroidManifest.xml文件的作用,并列举其中需要配置的重要元素。
9. Android布局- 请描述几种常见的布局方式,如线性布局(LinearLayout)、相对布局(RelativeLayout)、帧布局(FrameLayout)等。
10. Android资源- 请解释Android资源的概念,并说明如何管理字符串资源、图片资源等。
第二部分:Java基础1. Java基本语法- 请简述Java的基本语法,包括变量、数据类型、运算符等。
2. 面向对象编程- 请解释面向对象编程的概念,并说明如何实现类的封装、继承和多态。
100道android面试题
![100道android面试题](https://img.taocdn.com/s3/m/2b13a9252af90242a895e523.png)
1.作用域public,protected,private,以及不写时的区别答:区别如下:作用域当前类同一package 子孙类其他packagepublic √ √ √ √protected √ √ √ ×friendly √ √ × ×private √ × × ×不写时默认为friendly2. ArrayList和V ector的区别答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半3. HashMap和Hashtable的区别一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value4. 多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify5. x=1,y=2,z=3;计算:y+=z--/++x答:y=36.String是最基本的数据类型吗?答:基本数据类型包括byte、int、char、long、float、double、boolean 和short。
.7. int 和Integer 有什么区别答:Java 提供两种不同的类型:引用类型和原始类型(或内置类型)。
Int 是java的原始数据类型,Integer是java为int提供的封装类8. String 和StringBuffer的区别答:JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据。
Android面试题集合(含答案)
![Android面试题集合(含答案)](https://img.taocdn.com/s3/m/28557f6d6c85ec3a87c2c5c0.png)
.云时代Android面试题集[键入文档副标题]目录第一章 Android最全面试题 71道题 (4)一、选择题 (4)二.填空和问答 (9)25. android中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、LinerLayout(线性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) (9)26. android 的四大组件是__Activity Service BrodcastReceiverContentProvier。
(9)27. java.io包中的__ObjectInputStream_和_ObjectOutputStream_类主要用于对对象(Object)的读写。
(9)28. android 中service的启动方法有:__startService____bindService_ (9)29. activity一般会重载7个方法用来维护其生命周期,分别是:onCreateonStart onResume onPause onStop onDestroy onRestart (9)30. android的数据存储的方式有:SharedPreferences数据存储、文件存储、SQLite数据库存储数据、Contentprovider存储数据、网络存储数据 (10)31. 当启动一个 Activity 并且新的 Activity 执行完后需要返回到启动它的Activity 数据,启动新Activity的方法是_startActivityForResult(intent,RequestCode)_,用来处理返回数据的Activity回调函数是void onActivityResult(int requestCode,intresultCode,intent data)_。
(10)33.下面程序运行的结果是:______________。
android面试题及答案
![android面试题及答案](https://img.taocdn.com/s3/m/0b1ffc97ac51f01dc281e53a580216fc700a5396.png)
android面试题及答案一、Activity 生命周期相关1. 请简述Activity的生命周期,并解释每个状态的含义。
- Activity生命周期主要包括 onCreate(), onStart(), onResume(), onPause(), onStop(), 和 onDestroy() 方法。
onCreate() 在Activity第一次创建时调用,用于初始化界面和数据。
onStart() 当Activity对用户可见时调用,表示Activity已经部分准备好与用户交互。
onResume() 当Activity准备与用户交互时调用,此时Activity处于前台。
onPause() 当Activity失去焦点,但未完全退出时调用,用于保存数据和清理资源。
onStop() 当Activity完全不再显示在屏幕上时调用,释放资源。
onDestroy() 当Activity被系统销毁时调用,用于做最后的清理工作。
2. Activity A跳转到Activity B,再按返回键,生命周期如何调用? - 当从Activity A跳转到Activity B时,Activity A的onPause()会被调用,然后是onStop(),而Activity B会依次调用onCreate(),onStart(),onResume()。
按返回键从Activity B返回到Activity A时,Activity B会依次调用onPause()和onStop(),Activity A则会依次调用onRestart(), onStart()和onResume()。
二、Intent 相关1. 请解释Intent的基本作用及其使用场景。
- Intent是Android中用于组件间通信的一种机制,它可以用于启动Activity,Service,发送广播等。
常见的使用场景包括从一个Activity启动另一个Activity,或者向Service发送数据。
android面试题目及其答案大全
![android面试题目及其答案大全](https://img.taocdn.com/s3/m/79aa7b49fe4733687e21aab9.png)
面试题目及其答案1,++i和i++ 区别2,makefile文件代码,写代码3,隐藏与重写的区别4,linux 基本命令使用如:如何查询帮助文档(man),如何查处文件(fiind),常用命令5,进程间通信有几种,效率如何6、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?7,tcp/ip 有几层8、一条最长的短信息约占多少byte?9,p2p 和SMTP分别在哪层10、android中的动画有哪几类,它们的特点和区别是什么?11,多态概念(父类引用子类参数)12、handler机制的原理13,java 写1+N的和14,数据结构与算法如排序,二叉树15,MVC概念(为什么有DAO层,什么作用)16,GC回收机制17、说说mvc模式的原理,它在android中的运用18,android项目自述19,java 的进程与线程维护20、Activity的生命周期21,N*N 打印出来的样子是(例如N=4) 1 2 3 412 13 14 511 16 15 610 9 8 722,linux 末行,输入,命令三个模式23、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念24,android 四层架构分别的作用(android系统框图)25、sim卡的EF 文件有何作用26,android四大组件,生命周期,onpause()与onstop()的区别27,UMI建模概念28,C语言打印N*N数组,规律如下:2维 1 23 43维 1 2 38 9 47 6 54维 1 2 3 412 13 14 511 16 15 610 9 8 71、Android dvm的进程和Linux的进程, 应用程序的进程是否为同一个概念DVM指dalivk的虚拟机。
每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。
而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念。
Android面试题集合(含答案)
![Android面试题集合(含答案)](https://img.taocdn.com/s3/m/c6533848770bf78a6429542f.png)
目录第一章An droid 最全面试题71道题 (4)一、选择题4二. 填空和问答 (11)25. an droid中常用的五个布局是FrameLayout(单帧布局)、RelativeLyout(相对布局)、云时代An droid面试题集[键入文档副标题]LinerLayout(线性布局)、TableLayout(表格布局)、AbsoluteLayout(绝对布局) .. 1126. an droid 的四大组件是Activity Service BrodcastReceiver ContentProvier。
(12)27. java.io 包中的ObiectlnputStream 禾口ObiectOutputStream 类主要用于对对象(Object)的读写。
(12)28. an droid 中service 的启动方法有:_startService bi ndService (12)29. activity 一般会重载7个方法用来维护其生命周期,分别是:on Create on StartonResume onPause onStop onDestroy onRestart (12)30. an droid的数据存储的方式有:SharedPrefere nces数据存储、文件存储、SQLite数据库存储数据、Contentprovider存储数据、网络存储数据 (12)31. 当启动一个Activity 并且新的Activity 执行完后需要返回到启动它的Activity数据,启动新Activity 的方法是startActivityForResult(intent,RequestCode),用来处理返回数据的Activity 回调函数是void onActivityResult(int requestCode,intresultCode.intent data)_。
(13)33. 下面程序运行的结果是:—_。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android常用面试简答题1、android 中得动画有哪几类,它们得特点与区别就是什么?参考答案:有两种,一种就是 Tween(补间)动画、还有一种就是 Frame(帧)动画。
Tween 动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度得变化;另一种 Frame 动画,传统得动画方法,通过顺序得播放排列好得图片来实现,类似电影。
2、请简述Handler得机制原理参考答案:andriod 提供了 Handler 与 Looper 来满足线程间得通信。
Handler 先进先出原则。
Looper类用来管理特定线程内对象之间得消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个 Looper 对象,由它来管理此线程里得 Message Queue(消息队列)。
2)Handler: 您可以构造 Handler 对象来与 Looper 沟通,以便 push 新消息到 Message Queue 里;或者接收 Looper从 Message Queue 取出)所送来得消息。
3) Message Queue(消息队列):用来存放线程放入得消息。
4)线程:UI thread 通常就就是 main thread,而 Android 启动程序时会替它建立一个Message Queue。
3、说说mvc模式得原理,它在android中得运用参考答案:MVC 就是 Model,View,Controller 得缩写,从上图可以瞧出 MVC 包含三个部分:模型( Model )对象:就是应用程序得主体部分,所有得业务逻辑都应该写在该层。
视图( View )对象:就是应用程序中负责生成用户界面得部分。
也就是在整个MVC 架构中用户唯一可以瞧到得一层,接收用户得输入,显示处理结果。
控制器( Control )对象:就是根据用户得输入,控制用户界面数据显示及更新Model 对象状态得部分,控制器更重要得一种导航功能,想用用户触发得相关事件,交给 Model处理。
Android 鼓励弱耦合与组件得重用,在 Android 中 MVC 得具体体现如下1) 视图层( view ):一般采用 xml 文件进行界面得描述,使用得时候可以非常方便得引入,当然,如何您对 android 了解得比较得多了话,就一定可以想到在 android 中也可以使用javascript+html 等得方式作为 view 层,当然这里需要进行 java 与 javascript 之间得通信,幸运得就是, android 提供了它们之间非常方便得通信实现。
2) 控制层( controller ): android 得控制层得重任通常落在了众多得 acitvity 得肩上,这句话也就暗含了不要在 acitivity 中写代码,要通过 activity 交割 model 业务逻辑层处理,这样做得另外一个原因就是 android 中得 acitivity 得响应时间就是 5s ,如果耗时得操作放在这里,程序就很容易被回收掉。
3) 模型层( model ):对数据库得操作、对网络等得操作都应该在 model里面处理,当然对业务计算等操作也就是必须放在得该层得。
4、通过Intent传递一些二进制数据得方法有哪些?参考答案:1)、使用Serializable接口实现序列化,这就是Java常用得方法。
2)、实现Parcelable接口,这里Android得部分类比如Bitmap类就已经实现了,同时Parcelable在Android AIDL中交换数据也很常见得。
5、在onCreate方法中Bundle savedInstanceState 这个参数有什么作用?参考答案:在onCreate方法中有saveInstanceState这个参数,其实这个参数对应两个方法。
void onSaveInstanceState(Bundle outState);void onRestoreInstanceState(Bundle savedInstanceState)。
当某个activity变得“容易”被系统销毁时,说白了就就是系统在内存不足或者其她异常情况下把您得Activity销毁时,将调用这个方法。
需要注意得就是它就是系统调用得,并且您得Activity就是被动得被销毁。
您可以在销毁得时候保存一下数据。
然后在onCreate方法中拿出来。
那什么情况下能触发这两个方法呢?1)、当用户按下HOME键时。
这就是显而易见得,系统不知道您按下HOME后要运行多少其她得程序,自然也不知道activity A就是否会被销毁,故系统会调用onSaveInstanceState,让用户有机会保存某些非永久性得数据。
以下几种情况得分析都遵循该原则2)、长按HOME键,选择运行其她得程序时。
3)、按下电源按键(关闭屏幕显示)时。
4)、从activity A中启动一个新得activity时。
5)、屏幕方向切换时,例如从竖屏切换到横屏时。
在屏幕切换之前,系统会销毁activity A,在屏幕切换之后系统又会自动地创建activity A,所以onSaveInstanceState一定会被执行总而言之,onSaveInstanceState得调用遵循一个重要原则,即当系统“未经您许可”时销毁了您得activity,则onSaveInstanceState会被系统调用,这就是系统得责任,因为它必须要提供一个机会让您保存您得数据(当然您不保存那就随便您了)。
至于onRestoreInstanceState方法,需要注意得就是,onSaveInstanceState方法与onRestoreInstanceState方法“不一定”就是成对得被调用得,onRestoreInstanceState被调用得前提就是,activity A“确实”被系统销毁了,而如果仅仅就是停留在有这种可能性得情况下,则该方法不会被调用,例如,当正在显示activity A得时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存得原因被系统销毁,故activity A得onRestoreInstanceState方法不会被执行另外,onRestoreInstanceState得bundle参数也会传递到onCreate方法中,您也可以选择在onCreate方法中做数据还原。
6、请谈谈Activity得生命周期?参考答案:在系统中得Activity被一个Activity栈所管理。
当一个新得Activity启动时,将被放置到栈顶,成为运行中得Activity,前一个Activity保留在栈中,不再放到前台,直到新得Activity退出为止。
Activity有四种本质区别得状态:1)在屏幕得前台(Activity栈顶),叫做活动状态或者运行状态(active or running)2)如果一个Activity失去焦点,但就是依然可见(一个新得非全屏得Activity 或者一个透明得Activity 被放置在栈顶),叫做暂停状态(Paused)。
一个暂停状态得Activity依然保持活力(保持所有得状态,成员信息,与窗口管理器保持连接),但就是在系统内存极端低下得时候将被杀掉。
3)如果一个Activity被另外得Activity完全覆盖掉,叫做停止状态(Stopped)。
它依然保持所有状态与成员信息,但就是它不再可见,所以它得窗口被隐藏,当系统内存需要被用在其她地方得时候,Stopped得Activity将被杀掉。
4)如果一个Activity就是Paused或者Stopped状态,系统可以将该Activity从内存中删除,Android系统采用两种方式进行删除,要么要求该Activity结束,要么直接杀掉它得进程。
当该Activity再次显示给用户时,它必须重新开始与重置前面得状态。
Activity提供了7个生命周期方法:onCreate(),onStart(),onResume(),onPause(),onStop(),onDestory(),onRestart()。
在这七个生命周期方法中有三个关键得循环。
其实官方给得那张图画得很明白,但估计很少人能有耐心去揣摩。
那就换种方式展现。
瞧图吧:1)以下该图呈现了一个Activity完整得生命周期,从onCreate(Bundle)开始到onDestroy()结束。
Activity在onCreate()设置所有得“全局”状态,在 onDestory()释放所有得资源。
首先我们运行程序,这就是打开MainActivity依次调用onCreate->onStart->onResume,这时MainActivity在栈顶,与我们交互得Activity都在栈顶。
然后我按下返回键,则会依次调用onPause->onStop->onDestory。
这属于一个完整得生命周期。
7、谈谈您对BroadCastRceiver得理解?参考答案:广播接收者,android四大组件之一,也就是唯一一个能动态注册得组件。
1)广播接收者就是一个专注于接收广播通知信息,并做出对应处理得组件。
很多广播就是源自于系统──比如,通知时区改变、电池电量低、拍摄了一张照片或者用户改变了语言选项。
应用程序也可以进行广播──比如说,通知其它应用程序一些数据下载完成并处于可用状态。
2)应用程序可以拥有任意数量得广播接收者以对所有它感兴趣得通知信息予以响应。
所有得接收器均继承自BroadcastReceiver基类。
3)广播接收者没有用户界面。
然而,它们可以启动一个activity来响应它们收到得信息,或者用NotificationManager来通知用户。
通知可以用很多种方式来吸引用户得注意力──闪动背灯、震动、播放声音等等。
一般来说就是在状态栏上放一个持久得图标,用户可以打开它并获取消息。
8、广播分几种?她们有什么区别?参考答案:广播被分为两种不同得类型:“普通广播(Normal broadcasts)”与“有序广播(Ordered broadcasts)”。
普通广播就是完全异步得,可以在同一时刻(逻辑上)被所有接收者接收到,消息传递得效率比较高,但缺点就是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播Intent得传播。
然而有序广播就是按照接收者声明得优先级别,被接收者依次接收广播。
如:A 得级别高于B,B得级别高于C,那么,广播先传给A,再传给B,最后传给C 。
优先级别声明在 intent-filter 元素得 android:priority 属性中,数越大优先级别越高,取值范围:-1000到1000,优先级别也可以调用IntentFilter对象得setPriority()进行设置。