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开发条件

需准备的工具与开发包(叁十二个人/6几位, 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目录,该目录下一般唯有二个文件,即ENVISION文件。该公文夹下边有个本田CR-V.java文件,索罗德.java是在确立项目时自动生成的,定义该类型拥有能源的目录。

3.Android4.1索引:该公文夹下包括android.jar文件,那是1个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中的文件会被映射到Escort.java文件中,访问的时候平素接纳财富ID即昂科威.raw.filename;assets文件夹下的文书不会被映射到CRUISER.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,
瑟维斯s,和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

XML,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的三个经过等级?

Adroid的六个经过等级

多个经过等级分别为:Foreground Process (前台进度)、Visible
Process、Service Process、Background Process和Empty
Process。那多少个进程等级不一样,他们的乌兰察布先行级也对应不一样,有高低之分。上边分别授课。

① 、Foreground Process (前台进度)

何以的叁个经过才是前台进度呢? 如下意况:

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

主导统计一下,约等于活动在交互,服务在前台执行,广播在接到,三者其中之一满意的那几个进度,皆在此之前台进度。从平安先行级的角度来说,杀死Foreground
Process须要用户响应,因为那么些安全先行级是最高的。

**再回看一下大家Activity的二种状态的首先种:Active/Runing**情形。在那些状态下,Android系统一般不会杀死这一个Activity,除非发生特别(ANR
applicationnot response抑或是FC force
close)。是不是也是参天的优先级吧?② 、Visible
ProcessActivity不在前台突显,但也从未藏匿,可以看的见,比如弹出一个对话框(input
Method)二个bound到visible只怕foreground的activity的Service,大概是3个输入法。**

那种进度等级就对应了Activity的事态:Paused。叁 、ServiceProcess正在运营的,不在上述三种情景的瑟维斯四 、Background
Process不可知状态的Activity进度,onStop()被调用

很醒目,对应Activity状态的Stoped。⑤ 、Empty
Process没有运维任何Components的进度,保留这一个历程最紧假如为了缓存的必要。

从上述剖析来看,肆个活动状态和六个进度等级具有密不可分的交换。还需融会贯通。

  1. Activity八种运营情势

在AndroidManifest.xml清单文件中的标签中通过android:launchMode设置Activity运转形式

standard默许值,表示在startActivity时即成立其实例

singleTop首先检查栈顶是还是不是有该Activity实例,有责再次来到,无责成立其实例

singleTask检查整个堆栈有无该Activity实例,有责再次回到,无责创制其实例

singleInstance单实例形式,3个Activity实例独享1个任务堆栈,并且不得不有3个仓库中有该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.怎么将1个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和艾德itText组合已毕登录注册组件

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)定义1个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.拿走不到的话从SDXC存储卡里获取(SD存储卡缓冲,,从microSD卡获取图片是置身子线程里执行的,否则迅速滑屏的话会不够流畅)

3.都拿走不到的话从网络下载图片并保存到SDXC卡同时插足内存并突显(视意况看是否要突显)

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)、数据(U福特ExplorerI和数据类型)找到最合适的零件来处理那几个打算。

21.Android的四大组件是哪些?它们的功能是什么样?

答:Android有四大组件:Activity、Service、布罗兹castReceiver、ContentProvider。

Activity:应用程序中,1个Activity平时就是一个独立的显示屏,它上边能够浮现一些控件也可以监听并拍卖用户的风云做出响应。Activity之间通过Intent举行通讯。

Service服务:三个Service是一段长生命周期的,没有用户界面的次第,可以用来开发如监控类程序。

布罗兹castReceive广播接收器:你的运用可以行使它对表面事件开展过滤只对感兴趣的表面事件(如当电话呼入时,可能数据互连网可用时)进行收纳并做出响应。广播接收器没有用户界面。但是,它们可以运维3个activity或serice来响应它们收到的信息。

ContentProvider内容提供者:首要用于三个使用间数据共享。这一个多少足以储存在文件系统中或SQLite数据库。

22.讲述下Service的生命周期,Service有何样运行方法,有何样分别,怎么着停用Service?**

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

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

一般有三种办法运营一个瑟维斯,它们对Service生命周期的影响是不均等的。

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

Service会经历onCreate到onStartCommand,然后处于运转情状,stopService的时候调用onDestroy方法。

假定是调用者自个儿直接退出而从不调用stopService的话,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=”一千”,进步其优先级

<方案二>:在startCommand()方法中回到STA牧马人T_STICKY或START_REDELIVER_INTENT则Service销毁之后会重启

25.Service是或不是运维在主线程,Service与Activity是还是不是运维在同三个线程?

Service与Activity与布罗兹castReceiver同样都运作在UI主线程,若是有耗时操作都会引发AN奥迪Q7难点

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会处理到位一个自此再处理第二个,每3个呼吁都会在1个独自的worker
thread中处理,不会阻塞应用程序的主线程

27.挂号广播有两种艺术,那个措施有怎么着特色和界别?

答:第①种:在清单文件中声称,添加

其次种接纳代码举办挂号如:

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

IncomingSMSReceiverreceiver=newIncomgSMSReceiver();

registerReceiver(receiver.filter);

二种注册项目标区分是:

1)第两种不是常驻型广播,相当于说广播跟随程序的生命周期。

2)第叁种是常驻型,也等于说当应用程序关闭后,若是有消息播报来,程序也会被系统调用自动运营。

28.广播的出殡格局有哪些

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

sendBroadcast()以此点子的播报是力所能及发送给全体广播接收者,根据注册的先后顺序,假如您这一个时候设置了广播接收者的优先级,优先级倘诺正好与注册顺序相同,则不会有此外难点,若是各种不相同,会出leaked
IntentReceiver这样的百般,并且在面前的广播接收者不可能调用abort布罗兹cast()方法将其截至,倘若调用会出布RhodescastReceiver
trying to return result during a non-ordered
broadcast的老大,当然,先接到到广播的receiver可以修改广播数据。

sendOrderedBroadcast()主意顾名思义就是priority的属品质起效果,并且在队列前边的receiver可以随时终止广播的殡葬。还有这些api能钦点final的receiver,那几个receiver是最终三个收下广播时间的receiver,并且一定会接到到广播事件,是无法被目前的receiver拦截的。实际做试验的图景是这么的,若是本身有一个receiver依序排列,并且sendOrdered布罗兹cast()方法内定了1个finalReceiver,那么intent传递给那陆个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线程间的通讯格局?**

答:AN奇骏:ApplicationNotResponding(应用程序无响应).当现身下列处境时,Android就会呈现AN奇骏对话框了:对输入事件(如按键、触摸屏事件)的响应超越5秒意向接受器(intentReceiver)当先10秒钟仍未执行落成Android应用程序完全运营在叁个独立的线程中(例如main)。那就代表,任何在主线程中运作的,须要费用大批量日子的操作都会引发AN凯雷德。

化解方案有三种:

1.AsyncTask异步义务中,doInBackground()和onPostExecute(Result)八个办法10分首要

doInBackground()那一个主意运营在后台线程中,首要承担实施那些很耗时的操作,如运动护理种类中的网络连接、解析XML等操作。该方法必须重载。

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

2.子thread+handler

31.
Handler的运转机制(运维原理)(Handler,Looper,MessageQueue,Message,Thread之间的涉及)

2个Handler允许你发送和拍卖Message和Runable对象,各个线程都有温馨的Looper,每一种Looper中封装着MessageQueue。Looper负责不断的从友好的音信队列里取出队头的天职或音讯执行。各个handler也和线程关联,Handler负责把Message和Runable对象传递给MessageQueue(用到post,sendMessage等方法),而且在这么些目标离开MessageQueue时,Handler负责执行他们(用到handleMessage方法)。

里头Message类就是概念了1个消息,这么些音信中包蕴一个讲述符和任意的多寡对象,那么些音信被用来传递给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)文件存储SDHC卡存储多媒体文件,文件缓存

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.怎样扫描T-Flash卡全体的多媒体财富:图片,视频,音频

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

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

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

相关文章

网站地图xml地图