Android初级面试题


Android初级:

1.了解Android系统架构

应用层:
Java应用开发工程师开发的装有应用程序比如地图,浏览器,QQ等属于该层,手机被之少信,拨号,浏览器等这些应用程序都是可以为开发人员开发的外应用程序所替换,这点不同让其他手机操作系统固化于系里面的系软件,更加灵活和个性化

以框架层:Java framework层源码OS定制开发为应用层开发人员提供API

网运作库层: C语言包括C语言标准库,多媒体库,OpenGL ES, SQLite,
Webkit,Dalvik虚拟机等,该层是对动框架层提供支撑之重叠,
Java看硬件需经NDK实现

Linux内核层:Android是基于Linux2.6舅核查,其基本系统服务如安全性、内存管理、进程管理、网路协商以及让型都依赖让Linux内核

DVM与JVM区别

http://yxwang0615.iteye.com/blog/947245

分一:dvm执行的凡.dex格式文件jvm执行之是.class文件android程序编译完事后生产.class文件,然后,dex工具会把.class文件处理成.dex文件,然后把资源文件及.dex文件等包裹成.apk文件。apk就是android
package的意思。jvm执行之是.class文件。

分二:dvm是冲寄存器的虚拟机而jvm执行是根据虚拟栈的虚拟机。寄存器存取速度比栈快的大都,dvm可以依据硬件实现最老的优化,比较可走设备。

区分三:.class文件是许多之冗余信息,dex工具会去冗余信息,并把装有的.class文件整合到.dex文件被。减少了I/O操作,提高了近似的搜寻速度

2.控如何搭建Android开发环境

急需准备的工具与开发包(32位/64各类, Windows/Linux) :JDKeclipse ADTSDK

1)安装JDK配置环境变量(bin)

2)安装eclipse

3) eclipse安装ADT插件—离线安装

4) eclipse指定SDK目录

5)配置SDK环境变量(toots, platform-tools)

流淌: Linux常用操作系统: Red Hat, Ubuntu

3.掌握Android项目目录结构

1.src目录:src(即Source
Code),src目录用来存放应用程序中具有的源代码,代码的源文件一般存放于该目录下之相应的包下。

2.gen目:gen目录,该目录下一般但生一个
文件,即R文件。该公文夹下面来只R.java文件,R.java是于建立项目时自动生成的,定义该档具有资源的目。

3.Android4.1目:该文件夹下涵android.jar文件,这是一个Java归档文件,其中涵盖构建应用程序所急需的具备的Android
SDK库(如Views、Controls)和APIs。

经过android.jar将好之应用程序绑定到Android SDK和Android
Emulator,这允许你采取具有Android的库和包,且如果你的应用程序在适当的条件被调剂。

4.assets目:该目录存放应用程序中行使的外表资源文件,如声音
视频等,在Android程序中好透过输入/输出流对拖欠目录中之文本进行读写。

5.res目录:该目录用来存放程序这所以到的图纸、界面布局文件以及XML格式的叙述文件。该目录下出差不多只目录。新建一个Android项目,在res目录下一般

见面来drawable,layout,valuse三独目录。drawable用来存放在图片资源,目录下一般会时有发生三只目录分别存放高中低三种植不同分辨率的图片,layout目录用来存放在应用程序的

界面布局文件,values目录下存放字符串资源,颜色资源,数组资源等XML文件。

6.AndroidManifest.xml

  1. Android中asset文件夹和raw文件夹区别?

报经:res/raw和assets的相同点:

两边目录下的文本于包后会原本封不动的保存在apk包中,不会见于编译成二进制。

res/raw和assets的不同点:

1)res/raw中之文书会让射到R.java文件中,访问的下一直运用资源ID即R.raw.filename;assets文件夹下的文本不见面受射到R.java中,访问的时刻要AssetManager类。

2)res/raw不得以起目录结构,而assets则可以有目录结构,也就是是assets目录下可还树文件夹

3)读取文件资源举例:

读取res/raw下的文本资源,通过以下方式获取输入流来进行摹写操作

InputStreamis=getResources().openRawResource(R.raw.filename);

读取assets下之公文资源,通过以下方法获得输入流来拓展摹写操作

AssetManageram=null;

am=getAssets();

InputStreamis=am.open(“filename”);

5.掌握AndroidManifest.xml结构(应用程序入口)

AndroidManifest.xml是每个android程序中须的文本。它座落合项目之彻底目录,描述了package中暴露无遗的零件(activities,services,等等),他们分别的落实类似,各种会为拍卖

的多寡及启动位置。除了会声称程序中的Activities, ContentProviders,
Services,和Intent
Receivers,还会指定permissions和instrumentation(安全控制和测试)

AndroidManifest.xml结构

Android程序入口:

action节点受到之android.intent.action.MAIN表明其所于的Activity是整套应用程序的入口点

6.掌握模拟器的以与常用adb命令

  1. adb devices

翻开时连续装置

  1. adb kill-server

终止adb进程

  1. adb start-server

启动adb进程

  1. adb shell

登shell模式(Linux模式),当连接有差不多只设施时,需执行命令

adb -s设备名shell

横流:进入shell模式继先后执行Linux命令

  1. adb install apk路径

设置apk至设备,当连接起差不多个装备时,需执行命令

adb -s设备名install apk路径

当设备之前所有次apk时,替换安装序执行命令

adb install -r apk路径

  1. adb uninstall要卸载的以包名

卸载已安装之动

  1. adb push要拷贝的文本路径 设备及存次文件的门路

以文件拷贝至设备sdcard,如adb push
F:\Android授课资料\种实训\1205A\apk\com.moluo.android_100111.apk
/sdcard

  1. adb pull设备上文件路径电脑存放文件路径

拿文件由设备拷贝到电脑,如adb pull /sdcard/com.moluo.android_100111.apk
E:/

  1. adb logcat

命令行的方法查看日志

而要将日志保存到有文件,adb logcat -> E:/test.txt

  1. android list avd

翻开时开立的兼具模拟器列表

  1. emulator @模拟器名字

起先某个模拟器

12.命令行操作数据库

adb shell

cd data/data

cd package

cd databases/cd shared_prefs/ cd files

sqlite3 test.db

>.tables

即可行响应sql语句

7.掌握Activity的生命周期及各艺术调用时机

报:共有七只周期函数:

voidonCreate(BundlesavedInstanceState)第一潮创时调用

voidonStart()被用户可见时调用

voidonRestart()当Activity处于stop状态而受另行起动时调用

voidonResume()当得焦点即可与用户交互时调用

voidonPause()当去焦点时调用

voidonStop()当不可见时调用

voidonDestroy()当销毁时调用

Activity A—> Activity B, B将A完全覆盖时生命周期调用流程:

onPause(A) –> onCreate(B) –> onStart(B) –> onResume(B)
–> onStop(A)

此时仍”Back”按键,证明周期调用流程

onPause(B) –> onRestart(A) –> onStart(A) –>onResume(A)
–> onStop(B) –> onDestroy(B)

学业:屏幕方向发生转移时怎样生命周期?

&&&&&& Android的5个经过等?

Adroid的5单经过等

5个过程等分别吗:Foreground Process (前台进程)、Visible
Process、Service Process、Background Process和Empty
Process。这几个经过等不同,他们的安全先行级吧针对许不同,有高低的分。下面分别教。

1、Foreground Process (前台进程)

怎么样的一个经过才是前台进程也? 如下情况:

a正处在Activity
Resume()状态b正处在与bound服务交互的状态c正处在服务在前台的状态,(startForeground()被调用)d
Service生命周期函数正在让实施(onCreate(),onStart(),onDestroy())e
BroadcastReceiver正在执行onReceive()方法

骨干总结一下,也就是走于交互,服务在前台执行,广播于接到,三者其中之一满足的是历程,都是前台进程。从安全先行级的角度来说,杀死Foreground
Process需要用户应,因为此安全先行级是参天的。

**复回首一下咱们Activity的季种植状态的率先种:Active/Runing**状态。在这状态下,Android系统一般不会见杀之Activity,除非有大(ANR
applicationnot response还是是FC force
close)。是休是为是最高的预先级吧?2、Visible
ProcessActivity不以前台显示,但为未曾藏匿,能够看之展现,比如弹出一个会话框(input
Method)一个bound到visible或者foreground的activity的Service
,或者是一个输入法。**

这种过程等就针对诺了Activity的状态:Paused。3、Service
Process正在运作的,不在上述两种状态的Service4、Background
Process不可见状态的Activity进程,onStop()被调用

杀显,对应Activity状态的Stoped。5、Empty
Process没有运行任何Components的过程,保留这个过程要是以缓存的急需。

从今以上分析来拘禁,4个活动状态和5个过程等具有密不可分的联络。还需融会贯通。

  1. Activity四栽启动模式

在AndroidManifest.xml清单文件中之标签中经android:launchMode设置Activity启动模式

standard默认值,表示于startActivity时便创造其实例

singleTop首先检查栈顶是否发生该Activity实例,有责返回,无责创建其实例

singleTask检查全堆栈有无该Activity实例,有责返回,无责创建其实例

singleInstance单实例模式,一个Activity实例独享一个职责堆栈,并且不得不有一个仓库中生该Activity的实例

9.AndroidManifest.xml清单文件标签中属性android:excludeFromRecents=”true”android:screenOrientation=”portrait”android:configChanges=”orientation|locale”的意义

答:android:excludeFromRecents表示是否可吃出示在日前开拓的activity列表里,true表示也,false表示是

android:screenOrientation表示activity显示的模式,一般用来设置activity横屏显示(horizontal)或竖屏显示(portrait)

android:configChanges=[oneormoreof:”mcc””mnc””locale””touchscreen””keyboard””keyboardHidden””navigation””orientation””fontScale”]

是当所指定属性(ConfigurationChanges)发生转移时,通知顺序调用onConfigurationChanged()函数,比如orientation屏幕方向来变更,locale语言环境产生变更时

10.安拿一个Activity设置成窗口的体制

答:在清单文件AndroidManifest.xml中相应的价签内安属性android:theme=”@android:style/Theme.Dialog”

  1. Activity的onSaveInstanceState()和onRestoreInstanceState()

答:Activity的onSaveInstanceState()和onRestoreInstanceState()并无是生命周期方法,它们不同为onCreate()、onPause()等生命周期方法,它们并不一定会让点。当用遇到意外状况(如:内存不足、用户一直按Home键)由网销毁一个Activity时,onSaveInstanceState()会受调用。但是当用户积极去销毁一个Activity时,例如在采用被仍返回键,onSaveInstanceState()就未会见吃调用。因为在这种场面下,用户之所作所为决定了无欲保存Activity的状态。通常onSaveInstanceState()只适合用于保存有少的状态,而onPause()适合用于数据的持久化保存。

除此以外,当屏幕的趋势有了移,Activity会被损毁以给再度创设,如果你想当Activity被损毁前缓存一些多少,并且以Activity被另行创设后回复缓存的多寡。可以重写Activity的onSaveInstanceState()和onRestoreInstanceState()方法。

12.列举Android中各种UI特效

答:两独Activity切换时动画设置:
startActivity之后调用overridePendingTransition(int enterAnim,
intexitAnim)

Fragment切换时动画效果

图片轮播效果:通过Gallery配合Timer定时器实现

瀑布流效果:

&侧滑菜单:

CoverFlow:

Path菜单:

&关键字飞入飞出功能:

翻页效果:

ViewPager:

Fragment:

自定义Tabhost:

刊评论图文混排:

13.自定义组件的贯彻思路

报:Android自定义组件有三栽实现思路:

1)继承某个现有组件,在那个基础及补偿加额外功能,如连续Gallery实现CoverFlow效果

2)复合型组件定义:继承某个Layout,实现复合组件自定义,如TextView和EditText组合实现登录注册组件

3)继承View,实现onDraw()方法,实现团结绘制组件,如翻页效果组件

14.谈谈UI中,Padding和Margin有什么区别,gravity与layout_gravity的区别

答:Padding用来指定组件内的内容去组件边界的距离;

Margin用来指定控件与控件之间的离

Gravity用来指定组件内之情相对于组件本身的职

Layout_gravity用来指定组件相对于那个大组件的职位

15.哪个组件可以实现手风琴效果,用来落实设置界面的接近,实现抽屉效果,悬浮窗口?

答:实现手风琴效果(ExpandableListView)

安界面的近乎(PreferenceActivity)保存至sharedpreference中

抽屉效果(slidingDrawer)组件

泛窗口:PopWindow,可以兑现类似Dialog和菜单的功力

16.listview优化策略?

报经:1)、自定义Adapter的getView(),对convetView进行判空,是当convertView不为空的时段一直还使用convertView

所以减少了诸多未必要的View的创始

2)定义一个ViewHolder,将convetView的tag设置也ViewHolder,不呢空时重新使用即可

3)、当ListView加载数据量较充分时好采用分页加载与图表异步加载

17.ListView分页加载实现思路?

常备实现分页加载有零星栽方法,一栽是于ListView底部设置一个按钮,用户点击即加载。另一样栽是当用户滑动到脚时自动加载。

在ListView底部安一个按钮,用户点击即加载实现思路:

//加上底部View,注意要在setAdapter方法前

ListView.addFooterView(moreView);

bt.setOnClickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

pg.setVisibility(View.VISIBLE);//将速漫漫可见

bt.setVisibility(View.GONE);//按钮不可见

handler.postDelayed(newRunnable(){

@Override

publicvoidrun(){

loadMoreDate();//加载重多数据

bt.setVisibility(View.VISIBLE);

pg.setVisibility(View.GONE);

mSimpleAdapter.notifyDataSetChanged();//通知listView刷新数据

}

},2000);

}

});

当用户滑动到脚时自动加载实现思路:

贯彻OnScrollListener接口重写onScrollStateChanged和onScroll方法,使用onscroll方法实现”滑动“后处理检查是不是还有新的笔录,如果起,添加记录到adapter,adapter调用notifyDataSetChanged更新数据;如果没有记录了,则不再加载数据。使用onScrollStateChanged可以检测是否滚到结尾一执且已滚动然后实施加载.

18.ListView图片异步加载实现思路?

1.先自从内存缓存着获图片展示(内存缓冲)

2.获不至的言语从SD卡里获取(SD卡缓冲,,从SD卡获取图片是置身子线程里执行之,否则快速滑屏的讲话会无敷流畅)

3.都得到不交的语从网下充斥图片并保存至SD卡同时进入内存并显示(视情看是不是如显示)

19.view出哪几栽更新方式

报:在主线程(UI线程)可以一直调用View.invalidate()
;在子线程需要更新UI可以一直调用View.postInvalidate(),也堪经过Handler发送消息给主线程,然后以handleMessage方法被通过View.invalidate()更新UI;还可于子线程中需要更新UI的时节调用runOnUIThread(Runnable
)方法,然后于此措施被更新UI,同时可行使AsyncTask异步任务,在doInBackground执行耗时操作,然后于onPostExcute方法中尽刷新UI动作

20.Intent的规律,作用,可以传递哪些项目的参数?

答:intent是连接Activity,Service,BroadcastReceiver,ContentProvider四大组件的投递员,,可以传递八种基本数据类及string,Bundle类型,以及落实了Serializable或者Parcelable的类。

Intent可以划分成显式意图和隐式意图。

显式意图:调用Intent.setComponent()或Intent.setClass()方法明显指定了组件名之Intent为显式意图,显式意图明显指定了Intent应该传递给何人组件。

隐式意图:没有明白指定组件名的Intent为隐式意图。Android系统会依据隐式意图中设置的动作(action)、类别(category)、数据(URI和数据类型)找到最好适用的零件来拍卖这图。

21.Android的季怪组件是啊?它们的用意是什么?

答:Android有四非常组件:Activity、Service、BroadcastReceiver、ContentProvider。

Activity:应用程序中,一个Activity通常就是一个独自的屏幕,它点可以来得有控件也足以监听并处理用户的事件做出响应。Activity之间通过Intent进行通信。

Service服务:一个Service是一致截长生命周期的,没有用户界面的次第,可以为此来开使监控类程序。

BroadcastReceive广播接收器:你的采取得运用它对表面事件进展过滤只针对谢兴趣的标事件(如当电话呼入时,或者数据网络可用时)进行收纳并做出响应。广播接收器没有用户界面。然而,它们可以启动一个activity或serice来响应她收到的消息。

ContentProvider内容提供者:主要用来多只使用中数共享。这些数量好储存于文件系统中还是SQLite数据库。

22.叙述下Service的生命周期,Service有安启动方法,有啊界别,怎样停用Service?**

http://blog.csdn.net/huanyufeng/article/details/5873407

答:Service的生命周期:onCreate,onStartCommand,onDestroy,onBind和onUnbind。

万般发生个别种方法启动一个Service,它们对Service生命周期的影响是免一致的。

1)通过context.startService()onCreate–>onStartCommand–>onDestroy

Service会经历onCreate到onStartCommand,然后处于运行状态,stopService的时刻调用onDestroy方法。

而是调用者自己一直退出而尚未调用stopService的言辞,Service会一直以后台运行。

一经Service已经启动了,当我们再次启航Service时,不会见在实行onCreate()方法,而是直接实施onStartCommand()方法。

2)通过context.bindService()onCreate–>
onBind—>onUnbind–>onDestroy

Service会运行onCreate,然后是调动用onBind,这个时节调用者和Service绑定在合。调用者退出了,Srevice就见面调用onUnbind->onDestroyed方法。

所谓绑定在同步就是共存亡了。调用者也得以透过调用unbindService方法来终止服务,这时候Srevice就见面调用onUnbind->onDestroyed方法。

横流:onStartCommand()有四种植回到回值:

http://wenku.baidu.com/view/0c2b1af8910ef12d2af9e7b5.html

START_STICKY:如果service进程被kill掉,保留service的状态为开端状态,但不保留递送的intent对象。随后系统会尝试还创设service,由于服务状态为初始状态,所以创建服务后必会调用onStartCommand(Intent,int,int)方法。如果当这期间从未其余启动命令于传送到service,那么参数Intent将为null。

START_NOT_STICKY:“非粘性的”。使用这返回值时,如果当履完onStartCommand后,服务为坏kill掉,系统以见面把它置为started状态,系统非会见自行还开该服务,直到startService(Intent
intent)方法更于调用;。

START_REDELIVER_INTENT:重传Intent。使用是返回值时,如果以实行完onStartCommand后,服务被特别kill掉,系统会活动还开该服务,并以Intent的价值传入。

START_STICKY_COMPATIBILITY:START_STICKY的相当版本,但非保险服务被kill后定能够重新开。

23.AIDL的全称是什么?有怎样的机能?**

报经:AIDL全称:Androidinterfacedefinitionlanguage(android接口定义语言),

职能:用来过进程的顾方法,即拜远程服务之方

http://blog.csdn.net/stonecao/article/details/6425019

aidl实现的步子

aidl可以传递的数据类型

24.怎样防止Android应用中之Service被系统回收?

<方案一>:通过安装setForeground()提升Service优先级,将其设置为前台进程

或者通过在清单文件中标签内通过安装android:priority=”1000″,提升该先级

<方案二>:在startCommand()方法吃归START_STICKY或START_REDELIVER_INTENT则Service销毁后会更开

25.Service是否运行于主线程,Service与Activity是否运行在与一个线程?

Service与Activity与BroadcastReceiver同样都运行于UI主线程,如果产生耗时操作都见面引发ANR问题

26.IntentService的用法

http://android.blog.51cto.com/268543/528166

http://blog.csdn.net/zhf198909/article/details/6906786

大凡Service的子类,主要用来缓解在Service中拍卖耗时操作.

IntentService使用队列的道拿呼吁的Intent加入队列,然后被一个worker
thread(线程)来拍卖队列中之Intent,对于异步的startService请求,IntentService会处理就一个后头再处理第二单,每一个呼吁都见面于一个独自的worker
thread中拍卖,不会见卡住应用程序的主线程

27.注册广播有几种艺术,这些主意发出啊特色以及界别?

报:第一种:在清单文件被宣称,添加

亚种植使代码进行注册如:

IntentFilterfilter=newIntentFilter(“android.provider.Telephony.SMS_RECEIVED”);

IncomingSMSReceiverreceiver=newIncomgSMSReceiver();

registerReceiver(receiver.filter);

少栽注册项目的区分是:

1)第二栽不是常驻型广播,也就是说广播跟随程序的生命周期。

2)第一种植是常驻型,也就是说当应用程序关闭后,如果来消息播报来,程序吗会受网调用自动运行。

28.广播底发送方产生什么

sendBroadcast(),sendOrderedBroadcast()sendStickyBroadcast()三种

sendBroadcast()是主意的播报是力所能及发送给有广播接收者,按照注册之先后顺序,如果你是时刻装了播音接收者的优先级,优先级如果正好跟注册顺序相同,则免见面有其他问题,如果逐个不相同,会出leaked
IntentReceiver这样的那个,并且在前边的播放接收者不可知调用abortBroadcast()方法以那个停止,如果调用会出BroadcastReceiver
trying to return result during a non-ordered
broadcast的不得了,当然,先接及广播的receiver可以改广播数据。

sendOrderedBroadcast()方法顾名思义就是priority的属性能于作用,并且在列前面的receiver可以天天终止广播的发送。还有这个api能指定final的receiver,这个receiver是终极一个收到广播时间的receiver,并且一定会收下至广播事件,是勿可知于前的receiver拦截的。实际做试验的状况是如此的,假而自己起3单receiver依序排列,并且sendOrderedBroadcast()方法指定了一个finalReceiver,那么intent传递让这4个Receiver的逐条吗Receiver1–>finalReceiver–>Receiver2–>finalReceiver–>Receiver3–>finalReceiver。这个特点可为此来统计体系受可知监听某种广播的Receiver的数额。

sendStickyBroadcast()字面意思是殡葬粘性的播报,使用是api需要权限android.Manifest.permission.BROADCAST_STICKY,粘性广播的风味是Intent会一直保留到广播事件结束,而这种广播也绝非所谓的10秒限制,10秒限制是凭便的播放如果onReceive方法执行时最好长,超过10秒的下系统会将这广播置为好杀死的candidate,一旦系统资源不够的时节,就见面杀这广播而被她不执。

注: (下面是广播接收者的生命周期以及一些细节部分:

1.播放接收者的生命周期是坏短的,在接收至广播的时刻创建,onReceive()方法了以后销毁

2.播放接收者中不用做一些耗时的工作,否则会弹出Application No
Response错误对话框

3.不过好与否休想当广播接收者中创造建子线程做耗时的工作,因为广播接收者为销毁后经过就改为了空进程,很轻吃网杀掉

4.耗经常之较丰富之干活极端好放在服务着形成)

29.简述Android中之IPC机制(进程之中的通信机制)IPC(Inter-ProcessCommunication,进程之中通信).

由于android系统受应用程序之间莫克共享内存。在android
SDK中提供了4种植用于跨进程通讯的主意。这4栽方式正对应于android系统受到4种植应用程序组件:Activity、Content
Provider、Broadcast和Service。其中Activity可以过进程调用其他应用程序的Activity;Content
Provider可以超越进程看其他应用程序中之数目(以Cursor对象形式返回),当然,也得以本着其余应用程序的数额开展多、删、改操
作;Broadcast可以于android系统面临保有应用程序发送广播,而需要跨越进程通讯的应用程序可以监听这些广播;Service和Content
Provider类似,也足以看其他应用程序中之数码,但不同的是,Content
Provider返回的是Cursor对象,而Service返回的凡Java对象,这种好过进程通讯的劳务叫AIDL服务。

aidl是AndroidInterfacedefinitionlanguage的缩写,它是相同种android内部进程通信接口的描述语言,通过其我们好定义进程之中的通信接口.编译器可以由此扩大名为aidl的文书充分成一段落代码,通过先行定义之接口及一定量单过程中通信进程的目的.

30.什么是ANR安避免其?(Android线程间的通信方式?**

报:ANR:ApplicationNotResponding(应用程序无响应).当出现下列情形常常,Android就见面显示ANR对话框了:对输入事件(如按键、触摸屏事件)的应超过5秒意向接受器(intentReceiver)超过10秒钟仍未执行了Android应用程序完全运转在一个单独的线程中(例如main)。这即代表,任何在主线程遭遇运行的,需要吃大量光阴之操作都见面引发ANR。

缓解方案来一定量栽:

1.AsyncTask异步任务中,doInBackground()和onPostExecute(Result)两个章程好关键

doInBackground()这个法运行在后台线程中,主要担负履行那些可怜耗时的操作,如运动护理体系受到的网络连接、解析XML等操作。该措施要重载。

onPostExecute(Result)这个主意呢运行为UI线程,在doInBackground(Params…)方法执行后调用,该措施用于拍卖后台任务执行后回到的结果。

2.子thread+handler

31.
Handler之运行机制(运行规律)(Handler,Looper,MessageQueue,Message,Thread之间的涉及)

一个Handler允许你发送和处理Message和Runable对象,每个线程都发生协调之Looper,每个Looper中查封装在MessageQueue。Looper负责不断的打自己之消息队列里取出队头的天职还是信息执行。每个handler也与线程关联,Handler负责把Message和Runable对象传递给MessageQueue(用到post,sendMessage等艺术),而且每当这些目标离开MessageQueue时,Handler负责执行他们(用到handleMessage方法)。

里头Message类就是概念了一个音讯,这个信息遭受蕴含一个叙述符和任意的数对象,这个消息于用来传递给Handler.Message对象提供额外的简单单int域和一个Object域。

32.
AsyncTask之基本点方式来什么样?如何启动和停止AsyncTask?如何当AsyncTask中更新UI

报经: AsyncTask的显要方法发生doInBackGround()运行在后几线程,执行耗时操作

onPostExcute()运行于UI主线程,用于实施刷新UI的代码

起先通过execute()方法

悬停通过cancel(boolean
flag)方法取消执行,传入参数ture表示若调用方法时异步任务正尽则打断执行并取消,如果传false表示执行完毕再收回

刷新UI的代码一般卸载onPostExcute()方法被

33.Android中的五栽存储方及其应用场景

答:1)SharedPreferences

积存路径:(data/data/packagename/shares_prefs),轻量级存储,以键值对之款型储存于xml中,一般用来保存应用中之设置属性

2)文件存储SD卡存储多媒体文件,文件缓存

3)Sqlite数据库嵌入式存储,存储路径:(data/data/packagename/databases),一种植嵌入式数据库,支持sql语言,存储大量结构性数据

4)ContentProvider进程(应用程序)间数共享,数据源可以是sqlite,也得是xml,相关类:ContentResolver(内容解析器),ContentObserver(

数量观察者)

5)网络存储天气数据的xml,json格式等等,通过HttpUrlConnection,HttpClient,或者SOAP协议获取数据

  1. Android中的动画API,及项目遭到之行使

答:
Android中发出个别栽动画,帧动画与补间动画,补间动画又生移动,旋转,缩放,渐变动画

3.0从此以有新特色属性动画

路面临利用状况:项目启动向导动画,
Activity切换时动画效果(overriedPendingTransaction()),类似Tab标签页选中起背景的切换,
Fragment切换时动画效果设置(setTransation()),

ViewPager翻页时动画效果

卡通效果不可以在onCreate()方法吃启动,因为这时候窗口没有完全渲染成功,可以再onWindowFocusChanged()方法中启动动画

35.播音视频有哪实现方式?

报经:1.以系统自带的播放器来播音,指定Action为ACTION_VIEW,Data为Uri,Type为其MIME类型。

//调用系统自带的播放器

Intentintent=newIntent(Intent.ACTION_VIEW);

intent.setDataAndType(uri,”video/mp4″);

startActivity(intent);

2.采取VideoView组件来播放,可以构成MediaController来实现播控,只是不能够随意变更视频的深浅及职务。

3.采用MediaPlayer和SurfaceView来促成,这种方式充分灵敏,可以由定义视频播放的大大小小以及职位。

36.什么扫描SD卡所有的多媒体资源:图片,视频,音频

1).通过文件过滤方式扫描(必须制定相应的后缀)

2).通过网提供的ContentProvider获取

http://ZGC-20130520CLI/svn/pact\_train/