[ 登录注册 ]

android

android开发面试题(强烈推荐!!!)

2016/03/17 09:29 admin 返回上一页

1

 

Android dvm

的进程和

Linux

的进程

应用程序的进程是否为同一个概念

 

DVM

Dalvik

的虚拟机。

每一个

Android

应用程序都在它自己的进程中运行,

都拥有一个独

立的

Dalvik

虚拟机实例。

而每一个

DVM

都是在

Linux 

中的一个进程,

所以说可以认为是同一

个概念。

 

 

2

sim

卡的

EF 

文件有何作用

 

sim

卡的文件系统有自己规范,主要是为了和手机通讯,

sim

 

身可以有自己的操作系统,

EF

就是作存储并和手机通讯用的

 

 

3

、嵌入式操作系统内存管理有哪几种,各有何特性

 

页式,段式,段页,用到了

MMU,

虚拟空间等技术

 

 

4

、什么是嵌入式实时操作系统

, Android 

操作系统属于实时操作系统吗

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其

处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实

时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、

 

航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和

硬实时两种,而

android

是基于

linux

内核的,因此属于软实时。

 

 

5

、一条最长的短信息约占多少

byte? 

中文

70(

包括标点

)

,英文

160

个字节

 

 

6

 

android

中的动画有哪几类,它们的特点和区别是什么?

 

两种,一种是

Tween

动画、还有一种是

Frame

动画。

Tween

动画,这种实现方式可以使视图

组件移动、放大、缩小以及产生透明度的变化;另一种

Frame

动画,传统的动画方法,通过顺

序的播放排列好的图片来实现,类似电影。

 

 

7

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

 

 

8

、说说

mvc

模式的原理,它在

android

中的运用

 

MVC(Model_view_contraller)

 

模型

_

视图

_

控制器”。

 

MVC

应用程序总是由这三个部分组

成。

Event(

事件

)

导致

Controller

改变

Model

View

,或者同时改变两者。只要

 

Controller

改变了

Models

的数据或者属性,所有依赖的

View

都会自动更新。类似的,只要

Controller

改变了

View

View

 

从潜在的

Model

中获取数据来刷新自己。

 

View

重绘和内存泄露的好像是面试经常问的问题

 

1. View

的刷新

在需要刷新的地方

,

使用

handle.sendmessage

发送信息

,

然后在

handle

getmessage

里面

执行

invaliate

或者

postinvaliate. 

2. GC

内存泄露

 

出现情况

1.

数据库的

cursor

没有关闭

 

2.

构造

adapter

,

没有使用缓存

contentview 

衍生

listview

的优化问题

-----

减少创建

view

的对象

,

充分使用

contentview,

可以使用一静态类

来优化处理

getview

的过程

3.Bitmap

对象不使用时采用

recycle()

释放内存

 

4.activity

中的对象的生命周期大于

activity 

调试方法

: DDMS==> HEAPSZIE==>dataobject==>[Total Size] 

还有其他问题

,

大家欢迎提出阿

,

可以是整体架构的

,

还有这个

Hal

这篇文章会涉及到以下几个内容

 

 

Activity

的生命周期

 

 

Activity

变成一个窗口:

Activity

属性设定

 

 

你后台的

Activity

被系统

 

回收怎么办:

onSaveInstanceState 

 

调用与被调用:我们的通信使者

 

- Intent 

 

Activity

的生命周期

 

和其他手机

 

平台

 

的应用程序一样,

Android

的应用程序的生命周期是被统一掌控的,也就是

说我们写的应用程序命运掌握在别人(系统)的手里,我们不能改变它,只能学习并适应它。

 

 
 

简单地说一下为什么是这样:我们手机在运行

 

一个应用程序的时候,

有可能打进来电话发进来短信,

或者没有电了,

这时候程序都会被中断,

优先去服务电话的基本功能,另外系统也不允许你占用太多资源,至少要保证电话功能吧

,

所以

资源不足的时候也就有可能被干掉。言归正传,

Activity

的基本生命周期如下代码所示:

 

Java 

代码

 

?

 

public

 

class

 MyActivity 

extends

 Activity 

protected

 

void

 onCreate(Bundle savedInstanceState); 

protected

 

void

 onStart(); 

protected

 

void

 onResume(); 

protected

 

void

 onPause(); 

protected

 

void

 onStop(); 

protected

 

void

 onDestroy(); 

你自己写的

Activity

会按需要

 

 

载这些方法,

onCreate

是免不了的,在一个

Activity

正常启动的过程中,他们被调用的顺

序是

 

onCreate -> onStart ->onResume, 

Activity

被干掉的时候顺序是

onPause -> 

onStop -> onDestroy 

,这样就是一个完整的生命周期,但是有人问了

 

,程序正运行着呢来电话了,这个程序咋办?中止了呗,如果中止的时候新出的一个

Activity

是全屏的那么:

onPause->onStop 

,恢复的时候

onStart->onResume 

,如果打断

 

这个应用程序的是一个

Theme

Translucent 

或者

Dialog 

Activity

那么只是

onPause ,

恢复

 

的时候

onResume 

 

详细介绍一下这几个方法中系统在做什么以及我们应该做什么:

 

onCreate: 

在这里创建界面,做一些数据的初始化工作

 

onStart: 

到这一步变成用户可见不可交互的

 

onResume: 

变成和用户可交互的,(在

activity 

栈系统通过栈的方式管理这些个

Activity

的最上面,运行

完弹出栈,则回到上一个

Activity) 

onPause: 

 

这一步是可见但不可交互的,系统会停止动画等消耗

CPU 

的事情从上文的描述已经知道,

应该在这里保存你的一些数据

,

因为这个时候你的程序的优先级降低,有可能被系统收回。在这

里保存的数据,应该在

 

onResume

里读出来,注意:这个方法里做的事情时间要短,因为下

一个

activity

不会等到这个方法完成才启动

 

onstop:



文章来源:http://www.bozhiyue.com/mianshiti/android/2016/0317/3517.html
评论
发表评论