Android试题

这篇博客主要介绍了Android开发的相关知识,包括Android应用的入口点、数据存储方式、进程优先级、实时操作系统概念、动画类型、MVC模式、ContentProvider数据共享、广播机制、XML解析方式以及Android组件间的关系等。此外,还讨论了Android开机自动运行程序的方法和系统的一些限制。
摘要由CSDN通过智能技术生成

Android应用的入口点是什么?

   Android使用Google Dalvik VM,相对于传统Java VM而言有着很大的不同,在Sun的Java体系中入口点和标准c语言一样是main(),而每个Android程序都包含着一个Application实例,一个Application实例中有多个Activity、Service等等。android.app.Application这个包的onCreate就是Android入口点,只不过一般情况无需重写该类,他的继承关系如下:

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Application

android.app.Application类包含了4个公开的方法

void  onConfigurationChanged(Configuration newConfig)
void  onCreate()  //这里就是android应用的入口点。
void  onLowMemory()
void  onTerminate()

 原文:http://www.android123.com.cn/kaifafaq/829.html

 

Android进程5个等级及区别,优先级别是什么?

1.foreground 2.visiable 3.service4.background 5.empty

Foreground Process(优先级最高,结束它需要用户响应): 正处于Activity Resume状态,正处于bound服务交互状态 正处于服务在前台运行状态(startForeground()被调用)。service生命周期函数正被执行,BroadcastReceiver正执行onReceive()方法

Visiable Process; Activity 不在前端显示,也没有完全隐藏(比如弹出对话框),一个bound到visible或者foreground的activity的service

Service Process:正在运行的不在上述两种状态的的service

Backgound Process: 不可见的activity 进程,(onStop()被调用)

Empty Process :没有运行任何Component的进程,保留这个进程主要为了缓存的需要。

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

嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。实时操作系统分为硬实时和软实时,android属于linux内核,linux在用户空间可抢占,内核空间在2.4以后可局部抢占,严格来讲 Android属于软实时系统。

 

sim卡的EF 文件有何作用
sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本 身可以有自己的操作系统,EF用于存储并和手机通讯

 

android中的动画有哪几类,它们的特点和区别是什么?
  两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。


返回键与Home键区别?

back键默认行为是finish处于前台的Activity的即Activity的状态为Destroy状态为止,再次启动该Activity是从onCreate开始的(不会调用onSaveInstanceState方法)Home键默认是stop前台的Activity即状态为onStop为止而不是Destroy,若再次启动它,会调用onSaveInstanceState方法,保持上次Activity的状态则是从OnRestart开始的---->onStart()--->onResume()


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。

 

说说MVC模式的原理,它在android中的运用

android的官方建议应用程序的开发采用mvc模式。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里面处理,当然对业务计算等操作也是必须放在的该层的

MVC的优点:低耦合性;高重用性和可适用性;较低的生命周期成本;快速的部署;可维护性;有利于软件工程化管理

请介绍下Android的数据存储方式。

Android提供了5种方式存储数据:
1、使用SharedPreferences存储数据;
2、文件存储数据;
3、SQLite数据库存储数据;
4、使用ContentProvider存储数据;
5、网络存储数据;
Android 中的数据存储都是私有的,其他应用程序都是无法访问的,除非通过ContentResolver获取其他程序共享的

请介绍下ContentProvider是如何实现数据共享的。
一个程序可以通过实现一个Content provider的抽象接口将自己的数据完全暴露出去,而且Content providers是以类似数据库中表的方式将数据暴露。Content providers存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。要想使应用程序的数据公开化,可通过2种方法:创建一个属于你自己的Content provider或者将你的数据添加到一个已经存在的Content provider中,前提是有相同数据类型并且有写入Content provider的权限。
如何通过一套标准及统一的接口获取其他应用程序暴露的数据?Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。


注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。

第一种方式:在Manifest.xml中注册广播(用于即使应用程序关闭状态,也需要接收到广播的情况)第二种方式,直接在代码中实现,但需要手动注册注销(用于更新可见的控件,如果不可见时就不去更新,也没必要去更新),

Android系统中的广播是广泛用于应用程序之间通信的一种手段,它类似于事件处理机制,不同的地方就是广播的处理是系统级别的事件处理过程(一般事件处理是控件级别的)。在此过程中仍然是离不开Intent对象,理解广播事件的处理过程,灵活运用广播处理机制,在关键之处往往能实现特别的效果,在Android 中如果要发送一个广播必须使用sendBroadCast 向系统发送对其感兴趣的广播接收器中。使用广播必须要有一个intent 对象必设置其action动作对象,每次接收广播都会重新生成一个接收广播的对象
在BroadCast 中尽量不要处理太多逻辑问题,建议复杂的逻辑交给Activity 或者 Service 去处理

android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别

XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。

5.activity,intent,service是什么关系

 

6.android中线程与线程,进程与进程之间如何通信
7.widget相对位置的完成在antivity的哪个生命周期阶段实现
10.

11.IPC及原理

12.如何开机自动运行程序:

当Android启动时,会发出一个系统广播,内容为ACTION_BOOT_COMPLETED,它的字符串常量表示为android.intent.action.BOOT_COMPLETED。只要在程序中“捕捉”到这个消息,再启动之即可。

13framework工作方式及原理,Activity是如何生成一个view的,机制是什么。

14.android本身的一些限制,不如apk包大小限制,读取大文件 时的时间限制。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值