《2022年Android考试知识点考试.pdf》由会员分享,可在线阅读,更多相关《2022年Android考试知识点考试.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Android 考试知识点考试考试知识点 (Android闭卷考试 ) 1.理解 Android 常见的几种布局。几种布局的高与宽 , 制定LinearLayout,线性布局 , 布局中的控件在线性方向上依次排列。默认控件水平方向排列。android:orientation=”horizontal”android:orientation=”vertical”注意: 当就是水平方向排列 , 控件宽度不能设置为android :layout_width=match_parent 否则控件会把水平方向沾满, 其她控件无法会控件覆盖 ( 无法放置 ) 当就是垂直方向 , 内部控件不能将android:
2、layout_height=match_parent 指定为 match_parent android:layout_weight=1, 使用比例方式来指定控件的大小RelativeLayout, 相对布局 , 就是通过相对定位的方式让布局中控件可以出现在布局的任何位置。内部控件 , 三种属性 , 属性值就是 true 或 false android:layout_centerHrizontal 水平居中 , 属性值就是” id/* “android:layout_below 在某元素的下方属性值就是数值android:layout_marginLeft 离某元素左边缘的距离FrameLayo
3、ut, 帧布局 , 简单, 应用场景少 , 与碎片一起使用 , 没有定位方式 , 所有控件默认在布局的左上角 , 后面的会覆盖前面的。 每一个组件都代表一个画面用该布局可以实现动画效果PercentFrame(Relative)Layout百分比布局 : 布局中可以不用wrap_content,match_parent等方式来指定控件的大小 , 直接指定控件所占的百分比, 实现平分布局甚至任意比例分割布局。注意百分比布局需要添加库依赖 support:percent:24、由于 LinearLayout本身支持按比例指定控件大小, 所以百分比布只为RelativeLayout与 Relativ
4、eLayout功能扩展表格布局 (Tablelayout)采用行列的形式管理UI 组件 ,无需明确地声明它的行列数, 而就是通过添加TableRow、其她组件来控制表格的行数与列数GridLayout就是 Android4 、0 之后新增的布局管理器 , 因此正常情况下需要在Android 4 、0 之后的版本中才能使用 , 如果希望在更早的版本中使用的话, 需要导入相应的支撑库 (v7 包的 gridlayout包) 。Grid Layout 网格布局 , 与前面所讲的 Table Layout( 表格布局 ) 有点类似 , 不过她有很多前者没有的东西, 因此也更加好用 : - 可以自己设置
5、布局中组件的排列方式- 可以自定义网格布局有多少行、列- 可以直接设置组件位于某行某列- 可以设置组件横跨几行或者几列精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 17 页 - - - - - - - - - - Android 考试知识点考试Absolute Layout 它不提供任何布局控制 , 而就是由开发人员自己通过X、Y坐标来控制组件的位置。 运行 Android 应用的手机往往千差万别 , 屏幕大小、分别率、屏幕密度等都可能存在较大的差异, 使用绝对布局的话很难做机型适配- 已经
6、被废弃2.理解 Android 应用程序开发过程中 , 常见的四种设计模式及各自的使用场合。ListView-Adapter 、Builder-Dialog 、Factory-选项卡、 Listener-事件监听。1 适配器模式 : 简介 :将一个类的接口转换成客户希望的另外一个接口,从而使原本因接口不匹配而无法再一起工作的两个类能够在一起工作。不同的数据提供者使用一个适配器来向一个相同的客户提供服务。举例 :ListView 或 GridView的 Adapter 。2 建造者模式 : 简介 :将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的显示 ,但其根本还就是不变。举
7、例 :AlertDialog 、Builder 、AlertDialog 、Builder, 使用该 Builder 来构建复杂的AlertDialog对象工厂模式 : 定义一个用于创建对象的接口, 让子类决定将哪一个类实例化。外部不需要关心工厂就是如何创建一个复杂产品的过程示例:BitmapFactory位图工厂 , 专门用来将指定的图片转换为指定的位图 Bitmap。监听器模式事件源经过事件的封装传给监听器,当事件源触发事件后,监听器接收到事件对象可以回调事件的方法、 Listener-事件监听观察者模式 :定义对象间就是一 (Subject)对多(Observer)的依赖关系 ,当一个对
8、象发生变化时 ,其它依赖该对象的对象都会收到通知,并随着变化。广播机制就就是观察者模式ListView与BaseAdapter组 合 时 ,当BaseAdapter的item改 变 时 ,我 们 经 常 会 调 用notifyDataSetChanged(),通知 Listview 刷新3.Android 中可支持网页的缩放的视图(View) 及其功能在 Android 系统中 , 内置了一款高性能的浏览器, 其内核就就是WebKit,WebView网页视图 , 就就是在这个基础上封装的一个控件, 我们可以直接用这个控件在应用程序内去显示Web页面, 直接用 HTML文件做为布局文件 , 可以
9、与 JavaScript交互调用。显示与渲染 web页面(1)、直接显示网页设置在当前应用中打开网页,如果不设置的话会使用手机浏览器打开网页 mWebView 、setWebViewClient(new WebViewClient() 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 17 页 - - - - - - - - - - Android 考试知识点考试 Override public boolean shouldOverrideUrlLoading(WebView view, Web
10、ResourceRequest request) view、loadUrl(); return true; ); mWebView 、loadUrl();(2)与 js 交互设置支持 JavascriptWebSettings settings = webView、getSettings(); settings、setJavaScriptEnabled(true); (3)可以利用 html做界面布局4.理解 View与 ViewGroup的用途及两者之间的关系。继承结构 : View 就是 ViewGroup的父类类。 View 就是所有 UI 组件的基类 ,而 ViewGroup就是容纳这
11、些组件的容器 ,其本身也就是从View 派生出来的、View 中所有的子类成为widgets,viewgroup的子类成为layout 。View 与 ViewGroup之间采用了组合设计模式,可以使得 “部分 -整体”同等对待。 ViewGroup作为布局容器类的最上层,布局容器里面又可以有View 与 ViewGroup 。对于 setContentView(R、layout 、 layout 的 xml 文件 )方法 ,Activity 其实不就是显示视图(直观上感觉就是它),实际上 Activity 调用了 PhoneWindow的 setContentView()方法 ,然后加载视图
12、 ,将视图放到这个Window上,而 Activity 其实构造的时候初始化的就是Window(PhoneWindow),Activity其实就是个控制单元,即可视的人机交互界面。Activity 就是一个工人 ,它来控制 Window;Window就是一面显示屏 ,用来显示信息;View 就就是要显示在显示屏上的信息,这些 View 都就是层层重叠在一起 (通过 infalte() 与 addView() 放到 Window显示屏上的。而 LayoutInfalter就就是用来生成 View 的一个工具 ,XML 布局文件就就是用来生成View 的原料。(2) 、Activity、Windo
13、w、View 之间的关系 :Activity 就是 Window与 View 之间的桥梁 ,将 View 的内容信息显示在 Window窗口上面。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 17 页 - - - - - - - - - - Android 考试知识点考试5.理解 Android 网络编程中 , 常见的数据传输格式。网络传输中最常见的有xml 与 json ,还有 protocol buffers,gzip,ThriftXml通过 Pull,SAX 与 Dom 方式解析Jso
14、n 用 JSONObject与 GSON 解析。Protocol Buffers 一种数据描述语言,类似于 XML 能够将结构化数据序列化类似于 XML,但更小, 更快, 更简单经常用到 json 、 xml 等格式的数据 , 这些数据在传输前可以进行压缩, 这时候就会涉及到一种压缩格式 Gzip。 Gzip 的压缩比率非常大 , 有的甚至能达到 70% 以上,可以大大减少传输内容 , 提高用户的传输速度 , 进而提高用户的体验6.理解基本组件 Activity的相关知识 ( 如重载方法等 ) 。Android 应用有四大组件Activity、Service、BroadcastReceiver
15、、ContentProvider ContentProvider 组件 :用 于 Android 应 用 之 间实 现实时 的数 据 交 换。 常与ContentResolver一起使用BroadcastReceiver组件:广播消息接收器 ,类似于事件编程中的监听器,但就是不同的就是普通的事件监听器监听的事件源就是程序中的对象,而 BroadcastReceiver监听的事件源就是Android 应用程序中的其它组件。Service 组件 : 通常位于后台运行 ,一般不需要与用户交互,所以没有图形界面。Service 组件运行起来后会有独立的生命周期,它通常用于为其她组件提供后台服务或监控其
16、她组件的运行状态(1)activity 就是一种可以包含用户界面的组件,主要用于与用户进行交互表现形式就是一个屏幕,功能就是显示界面,消息传递整个生命周期 :onCreate()-onDestroy() 可见的生命周期:onStart()-onStop() 前台的生命周期:onResume()-onPause() 运行 ,暂停 (不在栈顶 ,但可见 ),停止 (完全不可见 ,有可能因内存不够被回收),销毁(从栈中移除覆盖了 activity 生命周期的每一个环节精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -
17、第 4 页,共 17 页 - - - - - - - - - - Android 考试知识点考试onCreate():当 activity 就是被创建时候 ,会自动运行该方法。该方法做一些初始化动作 ,比如加载布局 ,绑定时间等。onStart():活动在有不可见变为可见的时候调用。onResume(): 当 activity 开始与用户交互 (获得焦点 )时,会调用onResume, 此就是活动一定位于返回栈的栈顶,并处于运行状态。onPause(): 当系统准备启动或恢复另一个活动时调用。此时活动处于暂停状态 (当一个活动不再处于栈顶的位置,但仍然可见 ,弹出一个对话框或者一个不能占满屏幕
18、的活动都会导致前一个活动处于暂停状态)通常会在这个方法中释放掉一些占用cpu的资源精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 17 页 - - - - - - - - - - Android 考试知识点考试onStop():当这个 activity 完全瞧不见的时候 ,会调用 onStop 方法。以下三种情况都会使这个activity 调用 onStop()方法,第一种就是一个新的 activity被执行 ,第二种就是一个已经存在的activity 被切换到最前端,第三种就是这个 acti
19、vity 要被销毁。onRestart():把 activity 从停止状态变为运行状态,活动被重新启用。onDestroy():当 activity 销毁前会调用该方法 ,之后变为销毁状态。理解何时需要在 Activity 中重写方法 onActivityResult?当使用 startActivityForResult()( 在第一个活动中 )方法启动另一个 Activity 时,需要在第一个活动中重写onActivityResult() 方法,获得被启动 Activity 返回的结果。Intent intent=new Intent(this ,secondeActivity、class
20、 ); startActivityForResult(intent,int 请求码 ); 重写 Override protected void onActivityResult(int requestCode, int resultCode, Intent data) String result = data 、getExtras()、getString(result);/得到新 Activity 关闭后返回的数据 Log、i(TAG, result); 在第二个活动中 : 点击事件中/ 数据就是使用Intent返回 Intent intent = new Intent(); /把返回数据存入
21、Intent intent、putExtra(result, My name is linjiqin); /设置返回数据 OtherActivity、this、setResult(RESULT_OK, intent); /关闭 Activity OtherActivity、this、finish(); 7. 理解在 Intent传递数据时使用的几种数据类型。基本数据类型Serializable、将一个对象序列化后转换成可以传输的状态,序列化的方法就是让类自身继承Serializable 接口Person p=new Person(); p、setname();、Intent intent=ne
22、w Intent(源活动 ,目标活动、 class); intent 、putExtra( “ 名字 ” ,p); 接受数据 :Person p2=getIntent() 、getSerializableExtra(“ 名字 ); 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 6 页,共 17 页 - - - - - - - - - - Android 考试知识点考试Parcelable,同样需要类继承Parcelable 接口,但需要在 person 类中重写接口中两个方法,必须有一个实现了Parce
23、lable、Creator 接口的静态常量成员字段。接受数据方法getIntent 、getParcelableExtra(“ 名字 ); CharSequence、 CharSequence接 口 ,实 现 了 这 个 接 口 的 类 有 :CharBuffer、 String 、StringBuffer 、 StringBuilder这个四个类。 所以处理 String 或者 StringBuffer的类就不用重载。Bundle:一种存放字符串与Parcelable类型数据的map 类型的容器类 ,通过存放数据键(key)获取对应的各种类型的值(value), 而且必须通过键(key) 获
24、取。I n t e n t i n t e n t =n e w I n t e n t ( ) ;i n t e n t 、 set C l a ss( act i vi t y 1、 t h i s, a ct i v i t y2 、 cl a ss) ;/ / 描 述 起 点 与 目 标B u n d l e b u n d l e = n e w B u n d l e ( ) ; / / 创 建B u n d l e 对 象b u n d l e、 pu t St r i n g( so m et h i n g , A ct i vi t y 1 发 来 的 数 据 ) ; /
25、/ 装 入 数 据i n t e n t 、 p u t E x t r a s( b u n d l e) ; / / 把 B u n d l e 塞 入I n t en t 里 面st a r t A ct i v i t y ( i n t en t ) ; / / 开 始 切 换A ct i vi ty 2 接 收 数 据I n t e n t i n t e n t =t h i s、 g et I n t en t ( ) ; / / 获 取 已 有 的 i n t en t 对 象B u n d l e b u n d l e = i n t e n t 、 g et E x t
26、 r as( ) ;/ / 获 取i n t e n t 里 面 的b u n d l e 对 象st r i n g =b u n d l e、 ge t St r i n g( so m et h i n g ) ; / / 获 取B u n d l e 里 面 的 字 符 串8理解 Android 中包含哪几个标准的“选择”部件(View) 。?RadioButton 单选按钮 (同一组 RadioButton 放在一个 RadioGroup中)?CheckBox 复选框?Spinner下拉列表框?DatePicker日期选择组件?TimePicker 事件选择组件?NumberPick
27、er数值选择组件9. 理解 Android 工程中哪些目录中的文件就是由Eclipse自动编译生成。src、存放的就是该项目的 源代码bin、编译后 自动生成目录 。二进制文件 ,包括 class、资源文件、 dex 、apk等gen、自动生成的文件目录。该目录下的文件全部都就是ADT自动生成的 ,一般并不需要去修改 ,实际上该目录下只定义了一个R、java 文件 ,该文件相当于项目的字典,为项目中用户界面、字符串、图片等资源都会在该类中创建其惟一的ID res存放应用程序中经常使用的资源文件等。9理解 SQLite 的一般用法。SQLite 就是一款轻量级关系型数据库。安卓内置SQLite。
28、SQLiteOpenHelper: SQLiteOpenHelper 就是就是一个辅助类。这个类主要生成一个数据库 , 并对数据库的版本进行管理。当在程序当中调用这个类的方法 getWritableDatabase()或者 getReadableDatabase()方法的时精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 17 页 - - - - - - - - - - Android 考试知识点考试候, 创建或打开一个现有的数据库, 并返回一个 SQLiteDatabase 对象用于对数据库进
29、行读写操作。当数据库不可写入(磁盘已满),getReadabelDatabase()返回的对象将以只读的方式打开数据库,getReadableDatabase()出现异常。构造方法 : public MyDatagbaseHelper(Context context, String name, SQLiteDatabase、CursorFactory factory, int version) this,数据库名、 db,null,版本 1 super (context, name, factory, version); SQLiteOpenHelper 就是一个抽象类 ,我们通常需要继承它
30、,并且实现里面的 2 个抽象方法 : 1、onCreate(SQLiteDatabase db) db、execSQL(sql 语句,建立表 ) 在数据库第一次生成 (调用 getdat、 、 与 getWriteabledatabase方法)的时候会调用这个方法,也就就是说 ,只有在 创建数据库的时候才会调用,当然也有一些其它的情况,一般我们在这个方法里边生成数据库表。2、 onUpgrade(SQLiteDatabase,int,int) 当 数 据 库需 要 升 级(修 改 表,创 建 新表 ,数据 备 份 ,删 除 表 )的 时候,Android 系统会调用这个方法。比如增加一张表。这
31、里要 db、execSQL(sql 语句)如果就是建的表已经存在,就要先删除,或不建。3、 onOpen(SQLiteDatabase) 非抽象: 当打开数据库时的回调函数。SQLiteDatabase sqlitedatabase=sqliteDBHelper、getWritableDatabase() 插入操作精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 17 页 - - - - - - - - - - Android 考试知识点考试 ContentValues cv = new Con
32、tentValues(); cv 、 put( COLUMN_NAME, person 、getName(); cv 、put( COLUMN_AGE, person 、getAge(); /当 cv 参数为空或者没有内容的时候 ,insert会失败 , 为了防止这种情况发生, / 要在第二个参数设置一个列名,当要插入的行为空行时, 将指定的列名值设置为null sqliteDataBase、insert(TABLE_NAME , null, cv) ;更新: sqliteDataBase、update(TABLE_NAME , cv, COLUMN_ID + =? , new StringS
33、tring、valueOf(person、getId();第三个与第 4 个参数不指定 , 默认更新所有行删除sqliteDataBase、delete(TABLE_NAME , COLUMN_ID + =? , new StringString、valueOf(id);, 后面的两个参数不指定的话默认删除所有行或者直接用sql来操作sqliteDataBase、 execSQL(sql语句 ,new String参数、 );11、 理解正确设置 onClickListener所需要的几个基本步骤。View、OnClickListener:单击事件的监听器必须实现的接口基于监听的事件处理模型:
34、 ?获取普通界面组件 (事件源 ),也就就是被监听的对象?实现事件监听器类,该监听器类就是一个特殊的Java 类,必须实现一个OnClickListener 接口?调用事件源的 setOnClickListener()方法注册事件监听器?常见的实现方法 : a、匿名内部类xml 布局文件中添加组件 , 设置组件 id; 在activity中 获 取 对 应id的 组 件 , 用setOnClickListener(new OnClickListener() ) 的方式绑定控件与事件监听器, 在内部类中重载精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师
35、归纳 - - - - - - - - - -第 9 页,共 17 页 - - - - - - - - - - Android 考试知识点考试onClick()方法, 实现想要的功能。a 的优化方案 : 使用内部类 , 还有外部类 , 但很少用在 Activity中定义一个内部类继承监听器接口, 或 new一个该监听器的对象setOnClickListener(对象实例 ) xml 布局文件中添加组件 , 设置组件 id; 在 activity中编写内部类实现 OnClickListener,实现 onClick()方法。绑定按钮与事件监听器 :button 、setOnClickListene
36、r(内部类的对象 ); btnshow、setOnClickListener(new BtnClickListener(); / 定义一个内部类 , 实现 View、OnClickListener接口, 并重写 onClick()方法 class BtnClickListener implements View、OnClickListener Override public void onClick(View v) Toast 、makeText(getApplicationContext(), 按钮被点击了, Toast、LENGTH_SHORT)、show(); c、直接绑定到标签利用布局
37、文件中的onClick 属性xml 布局文件中添加组件 , 设置 onClick 属性; Java 代码中实现与 onClick 属性值同名的方法名。d、Activiry作为事件监听器 。整个 Activity实现 onClickListener接口, 适用于控件量多的情况。 xml 布局文件中添加组件 , 设置组件 id; Activity实现 onClickListener接口, 即实现 onClick 方法, 完成各组件的功能。在 onCreate() 中绑定控件与事件监听器:findViewById(R、id 、Button03) 、setOnClickListener(this);
38、在 onCreate() 方法外重写 Overridepublicvoid onClick(View arg0) if (arg0 、getId()=R、id 、button ) System、out 、println(click Button、 ); 12. 理解 TabHost, TabSpec, TabWidget等基本类的用法。TabHost 组件 可以在界面中存放多个选项卡,必须有 TabWidget与 FrameLayout 组件TabHost 组件中必备的两个组件TabWidget: 该组件就就是TabHost 标签页中上部或者下部的按钮 , 可以点击按钮切换选项卡 ; 直接在
39、tabhost中加精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 17 页 - - - - - - - - - - Android 考试知识点考试 不加 ,即使 add 了选项卡 ,也无法区分开选项卡TabSpec: 代表了选项卡界面, 添加一个 TabSpec即可添加到TabHost 中,每一页就是内容 +标签,内容由 FrameLayout显示定义布局: 在 XML文件中 使用 TabHost 组件 , 并在其中 定义一个 FrameLayout 选项卡 内容 ; b、继承 TabAct
40、ivity: 显示选项卡组件的Activity继承 TabActivity; c、获取组件: 通过调用getTabHost()方法 , 获取 TabHost 对象 ; d、创建添加选项卡: 通过 TabHost 创建添加选项卡; TabHost tabs = (TabHost) findViewById(R、id 、tabhost); tabs 、setup(); TabHost、TabSpec spec = tabs、newTabSpec(tag1); spec、setContent(R、id 、tab1); spec、setIndicator(Clock); tabs 、addTab(sp
41、ec); 其中 tabs 、newTabSpec(tag1)用来 new一个 tab, 同时标记这个tab 的 tag setContent()用来处理点击这个tab后的动作 , 可以就是这个Activity下的一个组件 , 如setContent(R、 id 、 tab1) 布 局 文 件 , 也 可 以 就 是 一 个intent,比 如 :setContent(new Intent(this, SubTab、class) setIndicator()用来标记这个tab 的名字 , 可以就是 setIndicator(Clock),也可以包含其她的属性 , 如图片 :setIndicato
42、r( 商场 ,getResources()、getDrawable(android、 R、drawable 、arrow_down_float) tabs 、addTab(spec) 将这个 tab 添加如 TabHost 13理解 AsyncTask 在 Android 耗时操作中的使用方法。AysncTask就是谷歌封装的实现异步操作, 用于执行耗时任务并在UI 线程中更新结果的抽象类。背后的实现原理就就是异步消息机制(Handler) AsyncTask就是一个轻量级异步类,用户可以直接继承AsyncTask, 在类中实现一步操作,并提供接口反馈当前异步执行的程度(可以通过接口实现UI
43、进度更新 ),最后反馈执行的结果给UI 主线程。使用方法 : 继承 AsyncTask并且制定传入参数类型、描述过程类型以及返回值类型,这些类型均就是泛型需要重写的4 个方法 : onPreExecute():这个方法就是在异步加载进行前执行的,用于界面上的初始化操作, 必须现实一个进度条对话框。doInBackground(Params、): 只有这个 方法就是在子线程中进行的, 所有下载或者加载等 耗时 的操作 , 都可以在这里执行。任务一旦完成, 就可以通过return语句将任务的执行结果返回。如果AsyncTask 的第三个泛型参数指定的就是void, 就可以不用返回。更新UI精品资料
44、 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 17 页 - - - - - - - - - - Android 考试知识点考试操作 , 需要调用 publishProgress(传递的参数 ) 方法来完成。onProgressUpdate(接收 的参数 ): 这个方法就是在doInBackground方法中执行了publishProgress()方法的时候执行,publishProgress()方法就是向此方法传递一些用于描述过程的参数 , 比如用 Integer来描述下载的进度等, 实现对 UI
45、 进行操作。onPostExecute(Result):这个方法就是在doInBackground()方法执行完毕return之后执行 , 根据 return的 result类型来判断进行一些UI 操作。比如提醒任务结果, 关掉进度条对话框等以上的方法中 , 只有 doInBackground()这个方法就是在子线程中执行, 其她都就是在UI 线程 ,所以可以直接对UI 进行更新。New DownloadTask() 、execte();启动这个任务/ 这里定义的一个AsyncTask子类 , 输入参数类型为空, 过程指示参数为整型, 异步返回类型为布尔28class DownLoad ext
46、ends AsyncTask Asynctask 的不足之处 : 1、AsyncTask可能存在新开大量线程消耗系统资源与导致应用FC的风险2、AsyncTask一旦执行了doInBackground, 就算调用取消方法 ,也会将doInBackground 里面的代码执行完毕 ,才会停止。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 17 页 - - - - - - - - - - Android 考试知识点考试3、调用了 AsyncTask#execute()后,AsyncTask会把
47、任务交给线程池 ,由线程池来管理创建运行线程。线程池不经维护 , 当大量异步发生时 , 导致线程池满了 ,会出异常。14理解 Android 客户端程序与后端Web服务器应用程序之间的通信流程。客户端向服务器发送一条HTTP请求, 服务器接收到请求后会返回数据给客户端,然后客户端对数据进行解析。请求方式 HttpURLConnection 与 HttpClient,但后者被弃用在 6、0 后。但请求数据就是在子线程中, 而数据更新就是在 UI 主线程中必须在主线程中开启一个线程,并且使用Handler 这个对象来实现数据的异步请求、然后当请求响应完成之后才会在界面中更新数据。1. 手机客户端向
48、 Web应用服务器发送请求信息1) 首先引用所需要的各种API,比如 http,io 等2) 定义访问网站的 URL (3)创建 HttpURLConnection 对象,该对象的主要作用就是将Android 手机端的数据提交给 Web应用服务器3) 设置数据编码方式Android 手机在将准备好的数据发送到Web 服务器之前 ,需要对数据的编码进行规定,这样服务器在接收到这些数据后,就会根据发送过去的文字编码处理与显示。4) 提交 HttpURLConnection 对象与获取服务器 HttpResponse响应数据完成前面的工作 ,就该将数据提交给Web应用服务器了 ,在应用服务接收 An
49、droid 手机提交的数据后 ,经过处理 ,将要返回 (响应 )给 Android 手机的数据打包到一个HttpResponse对象中,发回给手机。2. 手机客户端接受响应数据获取响应服务的数据从Web服务器响应到手机终端的数据一般打包在一个字节数组中 ,关键就是这个字节数组中可能包含了各种不同的数据类型,为此,需要采取 Java数据流与过滤流的方法从字节数据中取出各种类型的数据15理解 MessageQueue 的工作原理。就是消息队列的意思 , 存放所有通过Handler 发送的消息。这部分消息会一直存在消息对列中 , 等待被处理 , 每个线程只有一个 MessageQueue 对象Mes
50、sageQueue 就是比较低层的类 , 就是持有 Message(在 Looper 中派发 ) 的一个链表 , 但 Message不就是直接添加到MessageQueue 中的, 而就是通过与 Looper相关联的 Handler 来进行的。在当前线程中可以通过调用Looper 、myQueue()方法来获取当前线程的MessageQueueMessageQueue,主要包含2 个操作 : 插入与读取。 读取操作会伴随着删除操作,插入与读取对应的方法分别为enqueueMessage与 next, 其中 enqueueMessage的作用就是往消息队列中插入一条消息,而 next的作用就是从