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、ServiceProcess正在周转的,不在上述二种情状的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合作提姆er定时器落成

瀑布流效果:

&侧滑菜单:

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.获取不到的话从TF卡里获取(TF存储卡缓冲,,从CF闪存卡获取图片是位于子线程里执行的,否则快速滑屏的话会不够流畅)

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,瑟维斯,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方法。

C语言,所谓绑定在一块就共存亡了。调用者也足以因而调用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是或不是运行在主线程,瑟维斯与Activity是不是运行在同一个线程?

Service与Activity与BroadcastReceiver同样都运行在UI主线程,假设有耗时操作都会引发ANR难点

26.IntentService的用法

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

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

是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)文件存储TF内存卡存储多媒体文件,文件缓存

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.哪些扫描PCIe闪存卡所有的多媒体资源:图片,视频,音频

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

2).通过系统提供的ContentProvider获取

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