当前位置:文档之家› Android应用开发提高系列——《Practical Java 中文版》读书笔记

Android应用开发提高系列——《Practical Java 中文版》读书笔记

Android应用开发提高系列——《Practical Java 中文版》读书笔记
Android应用开发提高系列——《Practical Java 中文版》读书笔记

Android应用开发提高系列——《Practical Java 中文版》读书笔记

前言

从开始学习A ndroid到现在,囫囵吞枣学了许多控件、布局的使用方法和技巧,看了许多相关的文章,也积累了不少项目经验。藉此通过归纳、总结和梳理相关知识,扎实基础,进一步提高A ndroid开发技能。学好A ndroid需要扎实的Java功底,所以将本文作为系列文章的开篇。本系列文章面向有一定A ndroid开发经验的读者,欢迎交流!

书籍

《P rac tic al Java 中文版》03版侯捷、刘永丹译

本书和《E ffec tive Java》,对前述重要而基础的技术细微处有着详尽、深刻、实用的介绍、剖析和范例,又以独立条款之姿展现,在内容的扎实度、可读性及易读性上的表现均十分良好。

本书围绕Java编程中遇到的实际问题展开。可以说书中所列专题正是那些令许多Java程序员困惑不已的FAQ。作者擅长采用恰如其分的示例来阐释问题,以平时的语言娓娓道出中肯的建议。这些建议往往一语中的,能直接融入编程工作中,可见它们确实是出自作者从实践中获得的真知灼见。

正文

注意:条目和用语可能与书籍有所出入,但尽量保持原样加一些自己的理解。

一、一般技术

1. Java唯一一种参数传递机制:by value(传值)。

备注:当参数为对象时,以传值方式传递对象的引用。(个人理解:传递指针的拷贝)

2. 对不变的data和objec t references使用final

备注:当声明一个对象为final时,不能改变其指向,但能改变其对象的值。

3. 缺省情况下所有非私有(non-private)、非静态(non-s tatic)函数都可被覆写。

3.1如果函数不想被子类覆写,将函数声明为final即可。

3.2如果类不想被子类覆写,将函数声明为final即可,从而禁止覆写该类所有函数。还能提高性能。

4. 在数组和V ec tors之间慎重选择。

备注: V ec tor内部实际是以数组实现的。

5. 多态优于ins tanceof,必要时才使用ins tanc eof。

备注:例如从父类转型为派生类时,需要使用ins tanceof。

6. 一旦不需要的对象引用,就将它设为null。

备注:如果局部变量的引用使用完离函数结束前还需要执行较大代码,可在使用完后设置为null,以便或许能使其在垃圾回收器下次运行时被回收。

二、对象与相等性

1. 区别== 和 equals()

备注:请使用== 测试两个基本类型是否完全相同,或测试两个对象引用是否指向同一个对象;使用equals()比较两个对象的内容是否相等。

2. 不要依赖equals()缺省实现

备注:所有Java对象都隐含继承了https://www.doczj.com/doc/50668419.html,ng.O bj ec t,默认的equals()只是检查对象引用是否指向同一个对象。

3. 实现equals()建议:

3.1请检查是否等于this

备注:测试是否指向同一个对象

3.2优先考虑使用getC lass()

备注:getClass()返回某个对象的运行期类(runtime class)。确保只有相同c lass所产生的对象才有机会被视为相等。范例:

public class Base {

@Override

public boolean equals(Object obj) {

if(obj != null && getClass() == obj.getClass()){

//继续比较相等性或直接返回true

}

return false;

}

}

3.3调用s uper.equals()唤起父类的相关行为

备注:当你为一个派生类撰写equals()时,你必须检查除https://www.doczj.com/doc/50668419.html,ng.O bjec t之外所有父类,看看它们是否都实现了equals()。如果有,那么一定要调用s uper.equals()。

3.4在equals()函数中谨慎使用ins tanceof

备注:如果允许派生类和父类进行比较,可能要采用ins tanc eof(getClass()会恒返回fals e)。注意instanceof 类似于is-a语义,需要注意位置,即(子类 ins tanceof 父类 -> 返回true;反之为false)。

三、异常处理

1. 认识异常流程机制

备注:try区段 -> [c atc h捕获区段][可选] -> finally终结区段。

2. 处理异常

如果异常产生却未被捕获,发生异常的线程将中断。处理异常:

a). 捕获并处理它,防止进一步传播。

b). 捕获并抛出一个新的异常给调用端。

备注:应确保新抛出的异常包含原异常相关信息,以保证不丢失重要信息。

c). 不捕获,任其传播给调用端。

输出错误信息:

a). 日志文件记录曾经发生过的异常

b). 输出异常

输出到标准错误串流:如e.printStac kTrac e()。

3. 防止出现异常覆盖

备注:如果在c atc h或finally区段又抛出了未捕获的异常,新的异常将覆盖try抛出的异常,只有一个异常可被传播到调用段。

4. throws子句

备注:提供throws子句的用意在于,提醒函数调用者,告知可能发生的异常。编译器会强迫调用端捕捉这些被列出的异常,所以不要再开发周期的最后才添加。

如果覆写对象(某个父类函数)没有抛出任何异常,那么覆写函数因为增加了代码而引发异常,那么你必须在新函数中捕捉异常并处理。

5. 使用finally避免资源泄漏

备注:finally区段代码无论是否发生异常都将执行,尤其适合维护对象内部状态和清理non-memory资源。

6. 使用建议:

a). 不要从try区段执行return、break或c ontinue语句离开try区段

备注:如果try区段和finally区段都return 数据,将返回finally区段return的数据。

b). 将try/c atc h区段置于循环之外

备注:异常对代码性能产生负面影响

c). 不要将异常用于流程控制

d). 在构造函数中抛出异常

e). 抛出异常之前将对象恢复为有效状态

备注:考虑下次执行这段代码时会发生什么事情,代码是否还能正常运行。

结束

预计本系列前几篇文章为《P ractical Java》和《E ffec tive Java》的读书笔记,后续内容还在规划当中,也欢迎大家把感兴趣的内容反馈给我作为潜在的系列文章。

Android应用开发提高系列(2)——《Practical Java 中文版》读书笔记(下)

正文

注意:条目和用语可能与书籍有所出入,但尽量保持原样加一些自己的理解。

一、性能

1. 先把焦点放在设计、数据结构和算法身上

备注:良好的设计、明智的选择数据结构和算法可能比高效代码更重要。

2. 不要依赖编译器优化技术

3. 理解运行时(runtime)代码优化

备注:JIT将bytec ode于运行时转换为本地二进制码,从而提高性能。因此编译后代码被执行次数越多,本机代码生成代价就很合算。

4. 连接字符串使用StringBuffer要比String快,尤其是大量字符串拼接

5. 将对象创建成本降至最小

备注:复用既有对象,不要创建非必要的对象,只在需要的时候才创建它们。

6. 将同步化(s ync hronization)降至最低

备注:如果s ync hronized函数抛出异常,则在异常离开函数之前,锁会自动释放。如果整个函数都需要被同步化,为了产生体积较小且执行速度较快的代码,请优先使用函数修饰符,而不是在函数内使用s ync hronized代码块。

7. 尽可能使用s tac k变量

备注:如果在函数中频繁访问成员变量、静态变量,可以用本地(local)变量替代,最后操作完后再赋值给成员/静态变量。

8. 尽可能的使用s tatic、final和private函数

备注:此类函数可以在编译期间被静态决议(s tatically resolved),而不需要动态议决(dynamic res olved)。(子类无法覆写)

9. 类的成员变量、静态变量都有缺省值,务须重复初始化

备注:记住,本地变量没有缺省值(例如函数内定义的变量)。

10. 尽可能的使用基本数据类型

备注:如int、s hort、char、boolean,使得代码更快更小。

11. 不要使用枚举器(E numeration)和迭代器(I terator)来遍历Vec tor

备注:使用for循环+get()

12. 使用Sys tem.arraycopy()来复制数组

备注:使用Sys tem.arrayc opy()代替for循环,可以产生更快的代码。如:

public void copyArray(int[] src, int[] dest) {

int size = src.length;

System.arraycopy(src, 0, dest, 0, size);

}

System.arrayc opy()是以native method实现的,可以直接、高效的移动原始数组到目标数组,因此它执行速度更快。

13. 优先使用数组,然后才考虑V ector和A rrayLis t,理由:

a).V ector的get()是同步的

b).A rrayLis t基本上就是一个非线程同步的V ec tor,比Vec tor要快

c).A rrayLis t和V ector添加元素或移除元素都需要重新整理数组。

备注:不要仅仅因为手上有个数不定的数据需要存储,就毫无选择的使用V ec tor或A rrayList。可以考虑创建一个足够大的数组,通常这样可能会浪费内存,但性能上的收益可能超过内存方面的代价。

14. 手工优化代码

a).剔除空白函数和无用代码

b).削减强度

备注:以更高效的操作替换成本昂贵的操作。一个常见的优化手法是使用复式复制操作符(如+=、-=)。

c).合并常量

备注:将变量声明为final,使得操作在编译器就进行。

d).删减相同的子表达式

备注:可用一个临时变量代替重复的表达式。

e).展开循环

备注:如循环次数少且已知循环次数,可展开去掉循环结构,直接访问数组元素。缺点是会产生更多代码。

f).简化代数

备注:使用数学技巧来简化表达式。(例如从1+..+100的问题)

g).搬移循环内的不变式

备注:循环内不变化的表达式可用移至循环外,不必重复计算表达式。

15. 编译为本机代码

备注:将程序的某部分编译为本机二进制代码,然后通过JNI访问。

二、多线程

1. 对于实例(ins tance)函数,同步机制锁定的是对象,而不是函数和代码块。

备注:函数或代码块被声明为s ync hronized并非意味它在同一时刻只能有一个线程执行(同一对象不同线程调用会阻塞)。Java语言不允许将构造函数声明为s ync hronized。

2. 同步实例函数和同步静态函数争取的是不同的locks。

备注:两者均非多线程安全,可以使用实例变量进行同步控制,如(byte[] lock = new byte[0]),比其他任何对象都经济。

3. 对于s ync hronized函数中可被修改的数据,应使之成为private,并根据需要提供访问函数。如果访问函数返回的是可变对象,那么可以先克隆该对象。

4. 避免无谓的同步控制

备注:过度的同步控制可能导致代码死锁或执行缓慢。再次提醒,当一个函数声明为s ync hronized,所获得的loc k是隶属于调用此函数的那个对象。

5. 访问共享变量时请使用s ynchronized或volatile

备注:如果并发性很重要,而且不需要更新很多变量,则可以考虑使用volatile。一旦变量被声明为volatile,在每次访问它们时,它们就与主内存进行一致化。如果使用s ync hronized,只在取得loc k和释放loc k时候才一致化。

6. 在单一操作(s ingle operation)中锁定所有用到的对象

备注:如果某个同步函数调用了某个非同步实例函数来修改对象,它是线程安全的。使用同步控制时,一定要对关键字sync hronized所作所为牢记在心。它锁定的是对象而非函数或代码。

7. 以固定而全局性的顺序取得多个locks(机制)以避免死锁。P/181~P/185

备注:嵌入[锁定顺序]需要额外的一些工作、内存和执行时间。

8. 优先使用notifyA ll()而非notify()

备注:notify()和notifyA ll()用以唤醒处以等待状态的线程,waite()则让线程进入等待状态。notify()仅仅唤醒一个线程。

9. 针对wait()和notifyA ll()使用旋转锁(s pin locks)

备注:旋转锁模式(s pin-lock pattern)简洁、廉价,而且能确保等待着某个条件变量的代码能循规蹈矩。

10. 使用wait()和notifyA ll()替代轮询(polling loops)

备注:调用wait()时会释放同步对象锁,暂停(虚悬,s us pend)此线程。被暂停的线程不会占用CPU时间,直到被唤醒。如:

public void run()

{

int data;

while(true){

synchronized (pipe) {

while((data = pipe.getDate()) == 0){

try{

pipe.waite();

}

catch(InterruptedException e){}

}

}

//Process Data

}

}

11. 不要对已锁定对象的对象引用重新赋值。

12. 不要调用s top()和s us pend()

备注:s top()中止一个线程时,会释放线程持有的所有locks,有搅乱内部数据的风险;s us pend()暂时悬挂起一个线程,但不会释放持有的loc ks,可能带来死锁的风险。两种都会引发不可预测的行为和不正确的行为。

当线程的run()结束时,线程就中止了运行。可以用轮询+变量来控制,如下代码:

private volatile boolean stop;

public void stopThread()

{

stop = true;

}

public void run()

{

while(!stop){

//Process Data

}

}

注意:这里使用了关键字volatile,由于Java允许线程在其私有专用内存中保留主内存变量的副本(可以优化),线程1对线程2调用了s topT hread(),但线程2可能不会及时察觉到s top主内存变量已变化,导致不能及时中止线程。

三、类与接口

1. 实现一个final类(immutable c lass不可变类)时,请遵循下列规则:

a).声明所有数据为private

b). 只提供取值函数(getter),不提供赋值函数(s etter)

c). 在构造函数中设置有实例数据

d). 如果函数返回、接受引用final对象,请克隆这个对象。

e). 区别浅层拷贝和深层拷贝应用场景。如拷贝V ector需要使用深层拷贝。

2. 实现c lone()时记得调用s uper.c lone()

备注:不管是浅层拷贝还是深层拷贝都需要调用s uper.clone()。

3. 别只依赖finalize()清理内存以外的资源

备注:finalize()函数只有在垃圾回收器释放对象占用的空间之前才会被调用,回收时可能并非所有符合回收条件的对象都被回收,也无法保证是否被调用、何时调用。实现finalize()方法时记得调用s uper.finalize()。

4. 在构造函数内应避免调用非final函数,以免被覆写而改变初衷。

结束

书是从朋友那边借过来的,拿到手也有一段时间,磨磨唧唧好多天才看了几十页,而余下部分从上篇文章到这篇文章也不过才3-5天。发现以这种方式来看书也不错,一方面能加快速度,一方面由于要写文章更加认真细读,还能提炼把书读薄记录分享出来,实在是很适合我这样的 :)

Android工程师笔试题及答案(汇编)

Android工程师面试题 一、基础(79分) 1. String s = new String("xyz");创建了几个String Object? ( )3分 A、1个 B、2个 C、3个 D、4个 2. Math.round(11.5)和Math.round(-11.5)分别等于多少?()2分 A、11和-11 B、12和-11 C、11和-12 D、12和-12 3.以下错误的说法有:( )2分 A、只要设计合理,当出现error这样的情况时,程序完全可以自动处理 B、exception 表示一种设计或实现问题 C、Set和Map都继承自Collection接口 D、接口可以继承接口 E、抽象类可以继承没有构造函数的实体类 4. 以下哪种类型不能作为switch(expr1)表达式的expr1?( )3分 A、int B、long C、char D、byte 5. 有关ArrayList和Vector的说法,那些是错误的?( )3分 A、Vector是线程安全的 B、ArrayList是线程序不安全的 C、当需要增长时,Vector默认增长为原来一培 D、当需要增长时, ArrayList默认增长为原来一培 6. 以下说法那些是错误的?()3分 A、一个char型变量可以存储一个中文汉字 B、String是最基本的数据类型 C、Integer的缺省值是0 D、String类提供了数值不可改变的字符串 7.请指出以下代码的执行结果()5分 class A{ static{ System.out.print("X"); } public A(){ System.out.print("2"); } } class B extends A{ static{ System.out.print("a"); } public B(){ System.out.print("b"); } } public class Hello{ public static void main(String[] ars){

Android开发规范参考文档

Android开发参考文档 一、Android编码规范 1. java代码中不出现中文,最多注释中可以出现中文.xml代码中注释 2. 成员变量,局部变量、静态成员变量命名、常量(宏)命名 1). 成员变量: activity中的成员变量以m开头,后面的单词首字母大写(如Button mBackButton; String mName);实体类和自定义View的成员变量可以不以m开头(如ImageView imageView,String name), 2). 局部变量命名:只能包含字母,组合变量单词首字母出第一个外,都为大写,其他字母都为小写 3). 常量(宏)命名: 只能包含字母和_,字母全部大写,单词之间用_隔开UMENG_APP_KEY 3. Application命名 项目名称+App,如SlimApp,里面可以存放全局变量,但是杜绝存放过大的实体对象4. activity和其中的view变量命名 activity命名模式为:逻辑名称+Activity view命名模式为:逻辑名称+View 建议:如果layout文件很复杂,建议将layout分成多个模块,每个模块定义一个moduleViewHolder,其成员变量包含所属view 5. layout及其id命名规则 layout命名模式:activity_逻辑名称,或者把对应的activity的名字用“_”把单词分开。

命名模式为:view缩写_模块名称_view的逻辑名称, 用单词首字母进行缩写 view的缩写详情如下 LayoutView:lv RelativeView:rv TextView:tv ImageView:iv ImageButton:ib Button:btn 6. strings.xml中的 1). id命名模式: activity名称_功能模块名称_逻辑名称/activity名称_逻辑名称/common_逻辑名称,strings.xml中,使用activity名称注释,将文件内容区分开来 2). strings.xml中使用%1$s实现字符串的通配,合起来写 7. drawable中的图片命名 命名模式:activity名称_逻辑名称/common_逻辑名称/ic_逻辑名称 (逻辑名称: 这是一个什么样的图片,展示功能是什么) 8. styles.xml 将layout中不断重现的style提炼出通用的style通用组件,放到styles.xml中; 9. 使用layer-list和selector,主要是View onCclick onTouch等事件界面反映

NE555应用电路全集Microsoft+Word+文档

NE555应用电路全集 各种应用电路555触摸定时开关

集成电路IC1是一片555定时电路,在这里接成单稳态电路。平时由于触摸片P端无感应电压,电容C1通过555第7脚放电完毕,第3脚输出为低电平,继电器KS释放,电 灯不亮。 当需要开灯时,用手触碰一下金属片P,人体感应的杂波信号电压由C2加至555的触发端,使555的输出由低变成高电平,继电器KS吸合,电灯点亮。同时,555第7脚内部截止,电源便通过R1给C1充电,这就是定时的开始。 当电容C1上电压上升至电源电压的2/3时,555第7脚道通使C1放电,使第3脚输出由高电平变回到低电平,继电器释放,电灯熄灭,定时结束。 定时长短由R1、C1决定:T1=1.1R1*C1。按图中所标数值,定时时间约为4分钟。D1 可选用1N4148或1N4001。 相片曝光定时器 附图电路是用555单稳电路制成的相片曝光定时器。用人工启动式单稳电路。 工作原理:电源接通后,定时器进入稳态。此时定时电容CT的电压为:VCT=VCC= 6V。对555这个等效触发器来讲,两个输入都是高电平,即VS=0。继电器KA不吸合,常 开点是打开的,曝光照明灯HL不亮。 按一下按钮开关SB之后,定时电容CT立即放到电压为零。于是此时555电路等效触发的输入成为:R=0、S=0,它的输出就成高电平:V0=1。继电器KA吸动,常开接点闭合,曝光照明灯点亮。按钮开关按一下后立即放开,于是电源电压就通过RT向电容CT充电,暂稳态开始。当电容CT上的电压升到2/3VCC既4伏时,定时时间已到,555等效电路触发器的输入为:R=1、S=1,于是输出又翻转成低电平:V0=0。继电器KA释放,曝光灯H L熄灭。暂稳态结束,有恢复到稳态。

Android高级技术11月考试试题及答案

北京八维3G 学院2012年10月度 《Android 高级技术》试卷A 注意事项: 1. 本试卷共5页,满分100分; 2. 请把学院、姓名、班级写到密封线内,考试时间90分钟; 3. 请不要把答案写在密封线内 一、单选题(共33题,共62分) 1、 (2分) WebView 中可以用来处理js 中警示,确认等对话框的是(C ) A.WebSettingsB.WebViewClientC.WebChromeClientD.WebViewChrome 2、 (2分) Android 解析xml 的方法中,将整个文件加载到内存中进行解析的是?(C) A 、SAX B 、PULL C 、DOM D 、JSON 3、 (2分)以下属于调用摄像头硬件的权限的是:( A ) A. B. C. D. 4、 (1分) 使用Android 系统进行拍照用到的类有:(D ) A. SurfaceView B. SurfaceHolder C.Callback D. Camera 5、 (2分)LocationManager 获取位置信息的途径下列说法不正确的是(B ) A, GPS 定位更精确,缺点是只能在户外使用 B, NETWORK 通过基站和Wi- Fi 信号来获取位置信息,速度较慢,耗电较少。 C,获取用户位置信息,我们可以使用其中一个,也可以同时使用两个。 D, GPS 定位耗电严重,并且返回用户位置信息的速度远不能满足用户需求。 6、 (2分) 在开发AppWidget 窗口小部件时, 需要继承(D)类 A,AppWidgetReceiverB,AppWidgetConfigure C,AppWidgetManagerD,AppWidgetProvider 密 封 线 内 不 要 答 题 学院 班级姓 名

Android编程基础笔试题及答案2.0

《Android 编程基础》试卷A 注意事项: 1. 本试卷共8页,满分100分; 2. 请把学院、姓名、班级写到密封线内,考试时间90分钟; 3. 请不要把答案写在密封线内 一、单选题(共35题,共61分) 1、 D03MA057(2分)退出 activity 对一些资源以及状态的操作保存,可以在生命周期的哪个函数中进行 a A 、onPause() B 、onCreate() C 、onResume() D 、onStart() 2、 D02MA058 (2分) Android 项目工程下面的 assets 目录的作用是什么 b A 、放置应用到的图片资源。 Res/drawable B 、主要放置一些文件资源,这些文件会被原封不动打包到 apk 里面 C 、放置字符串,颜色,数组等常量数据 res/values D 、放置一些与 UI 相应的布局文件,都是 xml 文件 res/layout 3、 D04MA059 (2分)下列不属于android 布局的是(c) A 、F r a m e L a y o u t B 、L i n e a r L a y o u t C 、BorderLayout D 、T a b l e L a y o u t E 、R e l a t i v e L a y o u t 4、 D08MA2060 (2分)Intent 的作用的是 a A 、intent 是连接四大组件的纽带,可以实现界面间切换,可以包含动作和动作数据, B 、是一段长的生命周期,没有用户界面的程序,可以保持应用在后台运行,而不会 因为切 换页面而消失 service C 、实现应用程序间的数据共享 contentprovider D 、处理一个应用程序整体性的工作 5、 D04EA1061(1分) 下列哪个是AbsoluteLayout 中特有的属性 b A,android:layout_height B,android:layout_x C,android:layout_above D,android:layout_toRightOf 6、 D07EA1062(1分)RatingBar 组件中不能用属性直接设置的是d A,五角星个数 B,当前分数C,分数的增量D,五角星的色彩 7、 D 10EA1063(1分) 在手机开发中常用的数据库是_a__ A,sqlLite B,Oracle C,Sql Server D,Db23 8、 D14MA2064(2分) 关于BroadcastReceiver 的说法不正确的是_b_ A, 是用来接收广播Intent 的 密封线内不要答 题 学院班级姓名

Android经典项目源码学习包括工具、安全、影音等多个领域的项目

Android经典项目源码学习包括工具、安全、影音等多个领域的项目│├─地图相关││ bikeroute自行车导航源码、zip ││ Gps Test 源码、zip ││ GpsTracker源码、zip ││北京公交线路查询(离线)、zip ││百度地图API-定位周边搜索POI源码、zip ││百度地图API源码、zip ││获取Gps信息的程序源码、zip │││├─学习相关││365MobileSecretary v 1、0、zip ││365MobileSecretary、zip ││9妹工具(9Patch)、zip ││ AidlDemo(简单aidl的例子)、zip ││ aidl跨进程调用、zip ││alertDialog对话框、zip ││ Angle v 1、zip ││ Angle、zip ││ animation图片移动效果、zip ││BOOK看遍所有UI控件、zip ││ BrewClock闹钟、zip ││ broadcast电池电量显示源码、zip ││ BTWebViewSelection(webview选择文字)、zip ││ DocumentViewer(PDF阅读器)、zip ││ douBanList(滚动到底部加载新的,软缓存,懒加载)、zip ││draw自动绘画功能、zip ││expandableList扩展列表、zip ││ Facebook客户端、zip ││ Gamex木马分析报告、zip ││ GetSDTree(简单SD卡文件浏览器)、zip ││ Http 简单应用源码、zip ││ iconFile带图标的文件资源管理器、zip ││Intent切换、zip ││ jamendo-开源在线音乐、zip ││ listView学习源码、zip ││ menu单选菜单、zip ││ MyAppWeixin(仿微信界面)、zip ││ MyBrowser(简单网页浏览器)、zip ││ oschina--app(开源中国)、zip ││ PdfViewerPDF查看器、zip ││ Player(仿酷狗播放器)、zip ││progress前台运算、zip ││ ReadXmlByPull 使用Pull解析Xml文件、zip ││ ReadXmlByPull、zip ││ sharedPref学习源码、zip ││ sql练习合集、zip ││ style简单学习应用示例、zip ││ SurfaceView添加组件view 不被组件覆盖、zip ││ talk_xx_11_17 【Sundy系列】 全看懂了-加两年经验-语音朗读-语音识别-语音、zip ││ textView应

Android中文文档安装SDK资料

安装SDK 本页内容介绍如何安装Android SDK和设置你的开发环境。如果你还没有下载SDK,你可以点下面的连接进行开始下载,然后阅读后续文档学习如何安装,并使用此SDK来创建Android应用程序。 下载SDK 升级? 如果你已经用更早的版本开发过程,可以跳过本页,并阅读升级SDK文档. 系统和软件需求 用Android sdk的代码和工具开发Android应用程序,你需要下面列出来的合适开发电脑和开发环境. 所需操作系统: Windows XP 或Vista Mac OS X 10.4.8 或更高版本(仅支持x86) Linux ( Linux Ubuntu Dapper Drake 版本已测试) 所需开发环境: Eclipse IDE Eclipse 3.3 (Europa), 3.4 (Ganymede) + Eclipse JD T 插件(大多数的Eclipse IDE 包包含) + WST (可选,但Android编辑器的特性需要,大多数Eclipse IDEmost Eclipse IDE packages )包中包含 JDK 5 或JDK 6 (只有JRE是不够的) Android Development Tools 插件(可选) Not compatible with Gnu Compiler f or Java (gcj) 其他开发环境或IDE JDK 5 或JDK 6 (仅有JRE不够) Apache Ant 1.6.5 或更高版本(Linux 和Mac环境下), 1.7 或更高版本(Windows环境下) Java的Gnu Compiler不一致(gcj) 注: 如果你的电脑上已经安装了jdk,请确定它是上面所列的版本号。另外需要注意有些linux版本可能包含有jdk 1.4 或者java 的gnu编译器,Adroid开发是不支持在这两种版本 安装SDK 下载完SDK后,把.zip文件解压到你电脑上合适位置默认情况下, SDK文件被解压到 android_sdk___文件夹. 这个文件夹包含tools/, samples/等. 请注意系统里SDK解压后的文件夹的名字和位置—当你安装Android插件和使用SDK工具时,你将需要引用这个文件夹你可以添加SDK tools 的文件夹路径为你的路径. 如上所述, tools/文件夹位于SDK文件夹. Linux环境下,修改~/.bash_prof ile或者~/.bashrc文件. 寻找路径环境变量设置的那一行添tools/为路径环境变量.如果你没有找到这一行,你需要添加一行: export PA TH=${PA TH}:/tools Mac环境下,在你的home文件夹里面查找.bash_prof ile,然后和linux一样处理。如果以前没有.bash_prof ile文件夹可以创建它。 Windows 环境下, 右击我的电脑( My Computer), 并选择属性(Properties). 在标签页高级(Advanced), 点击环境变量 ( Environment Variables),当对话出现, 在系统变量(System Variables) 栏目里双击路径( Path ) .并添加tools/ 文件夹的完整路径. 添加tools 到你的路径使你运行Android Debug Bridge (adb)和其他命令行tools ,不需要为工具路径添加完整路径.需要说明的是,如果你升级你的SDK路径不同,你需要记得更新你的路径(PA TH )到新的位置. 安装Eclipse插件(ADT) 如果你要使用Eclipse IDE作为开发Android应用的环境,你可以安装支持Android工程和工具的通用插件Android Development Tools (ADT). AD T插件包含强大的扩张,使得创建,运行和调试Android 更快速,更简单。 如果你不使用Eclipse IDE,就不必下载和安装AD T插件 下载和安装ADT插件,请按照你们各自Eclipse版本步骤安装。

android笔试题及答案

单选题 中可以用来处理js中警示,确认等对话框的是(C) 2.假设assets目录下有文件结构html/,用loadUrl()方法将该网页加载至 webView 时,需传入的参数是(B) A. B. C. D. 3.下列不属于补间动画相关类的是(B) 中网络互连中需要获取状态码,根据状态码来判断请求是否已经完成,下列状 态码表示请求完成的是(D) 5.关于ImageSwitcher 说法错误的是:( B ) 里可以通过Alpha设定转换时候的透明位 B.在使用一个ImageSwitcher之前,不一定要调用setFactory方法 是设置资源被读入到这个ImageSwitcher的时候动画效果 是资源文件从这个ImageSwitcher里消失的时候要实现的动画效果 6.建立蓝牙连接时通过_D_方法来获取BluetoothAdapter对象 D. () 7.关于Handler的说法不正确的是( A ) A.它实现不同进程间通信的一种机制 B.它避免了在新线程中刷新UI的操作 C.它采用队列的方式来存储Message D.它实现不同线程间通信的一种机制 8.Vector和ArrayList的主要区别是(B): A. ArrayList内部基于链表,而Vector是基于数组的

B. Vector的大部分方法做了同步,而ArrayList没有同步 C. Vector是可串行化的,而ArrayList不是 D. Vector实现了RandomAccess,而ArrayList没有 9.下列属于SAX解析xml文件的优点的是(B ) A.将整个文档输在内存中,便于操作,支持删除,修改,重新排列等多种功能 B.不用事先调入整个文档,占用资源少 C.整个文档调入内存,浪费时间和空间 D.不是长久驻留在内存,数据不是持久的,事件过后,若没有保存数据,数据就会消失 a1="abc"; String a2="abc"; String a3="abcd"; 总共创建( A )个String对象。 多选题 1.在添加第一个appwidget窗口小部件时,会执行的方法是(ABD) 2.下列属于SOAP优点的是(ABCD) A,SOAP 与编程语言无关。SOAP 可以使用任何语言来完成 B,SOAP 是完全和厂商无关。 C,SOAP 与平台无关D,SOAP 是简单的,可扩展的 3.下列属于SAX解析XML需要用到的类和接口是(BCD) A.DocumentBuilder 4.在使用蓝牙必须获取的权限是(AD) 5.Chronometer类的重要方法(ABC) 简答题 1.oom是什么如何避免 当程序需要申请一段“大”内存,但是虚拟机没有办法及时的给到,即使做了GC操作以后这就会抛出OutOfMemoryException 也就是OOM 避免:

API 579中文版

第一章前言 1.1前言 ASME和API编制的有关承压设备的规程和标准规范了新压力容器、管道系统和储罐的设计、制造、监督和检测。这些规程并不是阐述设备使用中的老化问题,也不是阐述由于设备老化或检测时发现的源自最初制造过程带来的缺陷。FFS合乎适用性评价是一种定量的工程评价方法,可用于论证包含缺陷或损害的在役部件的结构完整性。本推荐规程为FFS评价方法提供指导特别是准备用于精练或石油化工企业的设备。本推荐规程的指导方针可用于对已经检测出含有缺陷的承压设备做出继续运行、修理、更换的决定以保证设备安全运行。 1.2范围 1.2.1本推荐规程的方法和步骤目的是补充和扩充API510、API570和API653的要求。 1.2.2本推荐规程的评价程序可用于合乎适用性评定或重新评估按以下标准设计和制造的设备: ·ASME B&PV Code, Section VIII, Division 1 ·ASME B&PV Code, Section VIII, Division 2 ·ASME B&PV Code, Section 1 ·ASME B31.3 Piping Code ·ASME B31.1 Piping Code ·API 650 ·API 620 1.2.3本规程的评价程序也可用于按照其它组织的规范或标准建设的压力容器设备包括国际或公司内部标准。本推荐规程有着广泛的应用因为这些评价方法是建立在公认的应力法、非破裂缺陷的塑性破坏荷载和FAD策略基础上(见第二章 2.4.2)。 1.2.3.1当本推荐规程的程序用于没有按照1.2.2节所列规范制造的压力容器时,建议用户首先要看一下附录H的讨论。附录H所提供的信息连同设计规范差异的知识应该使用户能够确定满足其他设计规范的设备的FFS评定的系数比例或限值,当评估其它标准或规范时应当考虑以下ASME和API

Android开发入门文档 v1.1

RK28平台技术文档 Android 开发入门 部 门: 内核组 版 本: V1.1 作 者: 陈美友 文件状态: [√] 草稿 [ ] 正式发布 [ ] 正在修改 日 期: 2008-12-1 关键字 Linux 、Android 、Native C/C++、编译、下载 概 述 本文档主要讲述了Android 的下载、编译,以 及本地C/C++程序的开发、Android 应用程序 的开发等… 本文档适用了Android 开发的初学者

目录 下载ANDROID源码 (3) 编译ANDROID源码: (4) 编译ANDROID中的LINUX内核: (5) 编译NATIVE C/C++程序 (6) 运行NATIVE C/C++应用程序 (7) 在WINDOWS XP操作系统上构建ANDROID应用程序开发环境 (8) 编写ANDROID应用程序 (9) ANDROID SDK文件夹结构分析 (9) ANDROID源代码结构 (10) ANDROID应用程序生成 (10)

注: 如果你要创建Android的SDK,那么你必须安装JDK5,不要安装JDK6 $sudo apt-get install sun-java5-jdk 如果你使用apt-get下载安装程序时,发现某些安装包无法下载的情况, 那么你可以从网络上其它地方用其它的工具下载安装包,然后进行安装。我 通常是通过Windows上的迅雷下载,然后通过VMware中的文件共享传到Linux系统中。 我的电脑: 主系统:Windows XP 模拟器安装在Windows XP上 VMware中安装Linux:Ubuntu8.10 Android源码存放路径:~/mydroid 下载Android源码 在这里面以Ubuntu(x86)操作系统为例,说明下载Android的步骤: 下载必要工具: 下载GIT工具: $ sudo apt-get install git-core gnupg 下载JDK6: $ sudo apt-get install sun-java6-jdk 下载下列工具包:flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl $ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev 下载Valgrind工具(可选): $ sudo apt-get install valgrind 安装Repo工具: 创建目录存放Repo: $ cd ~ $ mkdir bin $ export PATH=~/bin:$PATH 下载Repo: $ curl https://www.doczj.com/doc/50668419.html,/repo >~/bin/repo

安卓系统操作合集

安卓系统操作合集

使用技巧锦集之安卓系统(收集整理) 一,快速查看手机充电情况 方法1:通过待机屏幕查看,众所周知Android系统设计了自动锁屏功能,当手机处于一段时间不使用的情况下就会自动熄灭背景灯,如果需要激活的话就需要按下手机的Menu键两次,但是当按下第一次之后会显示出待机界面,里面就会显示目前的手机电池充电情况。 方法2:在Android系统中的About Phone选项中的“Status”选项,里面能够看到Battery Level的选项,这就是当前手机的充电情况显示。 方法3:通过第三方软件查看,由于Android系统中并没有专门的这类软件,所以如果想要详细的查看目前手机充电情况的话就是用一款第三方的电池查看软件吧 二,教你设置输入密码不可见 用过某些需要登录的应用程序的朋友相信都知道在输入账户密码默认情况下是显示出来已经输入的密码,为了安全起见都不想旁边的人看到自己的密码,那么怎样才能设置Android手机不可见已经输入的密码呢?教你设置输入密码不显示。 关于密码的设置当然是在Securitylocetion中了,所以我们先在主屏界面上按下Menu菜单键,在弹出的进阶菜单中选择最后一项“Settings”; 进入设置菜单后将滚动条向下滑动,找到“Securitylocetion”的分类,点击进入; 在安全性和位置分类菜单中找到Passwords分类,其中将“Visible passwords”选项后面的勾去掉即可。 三,Market下载失败解决办法 其实这样的问题在国外根本不存在,仅仅是在国内的朋友才会遇到这样的问题,这是因为貌似是国内将Google服务器屏蔽掉了,因此我们如果需要诸如YOUTUBE这样的服务时,只能“翻*墙”了。 设置静态IP的方法就能为各位网友解忧,该方法是Android123独创,配合了Google最新的服务,经过数十台Android手机均可以正常下载程序。 首先我们依次点选“Settings——wireless contrals——WIFI Settings——Menu——Adbanced”勾选USE Static IP这一项,并将DNS1设置为8.8.8.8,DNS2设置为8.8.4.4即可。 没错,上面讲到的方法正是利用了Google最新的DNS服务,填入之后其他不需要设置即可。 四,Droid铃声设置另类方法 我们在其他Android手机设置铃声的时候,一般采用的方法都是使用第三方软件(如Tong Picker)设置,这样的设置方法有些繁琐,必须在相应的设置箱内启动该程序才能设置,Android123这次为你带来了使用自带铃声库的选择的方法。 这个方法简单的来讲就是在内置的TF卡中设置相对应的文件夹,该文件夹必须按照规定的名称设置,否则系统不会认出来。我们可以通过这样的设置来电铃声、短信铃声、闹铃和系统提示音的声音。 首先我们要在TF卡根目录中设立一个名为media的文件夹,在该文件夹中设置audio的文件夹,再在

Android高级技术11月考试试题及答案

Android高级技术11月考试试题及答案 一、单选题(共33题,共62分)1、(2分)WebView中可以用来处理js中警示,确认等对话框的是(C)A.WebSettingsB.WebViewClientC.WebChromeClientD.WebView Chrome2、(2分)Android解析xml的方法中,将整个文件加载到内存中进行解析的是?(C)A、SAX B、PULL C、DOM D、JSON3、(2分)以下属于调用摄像头硬件的权限的是:(A)A.B.C.D.4、(1分)使用Android系统进行拍照用到的类有:(D) A.SurfaceView B.SurfaceHolder C.Callback D. Camera5、(2分)LocationManager获取位置信息的途径下列说法不正确的是(B)A,GPS定位更精确,缺点是只能在户外使用B,NETWORK通过基站和Wi-Fi信号来获取位置信息,速度较慢,耗电较少。C,获取用户位置信息,我们可以使用其中一个,也可以同时使用两个。D,GPS定位耗电严重,并且返回用户位置信息的速度远不能满足用户需求。6、(2分)在开发AppWidget窗口小部件时,需要继承(D)类A,AppWidgetReceiverB,AppWidgetConfigure C,AppWidgetManagerD,AppWidgetProvider 7、(4分)在AsyncTask中下列哪个方法是负责执行那些很耗时的后台计算工作的(C) A,runB,executeC,doInBackgroundD,onPostExecute 8、(2分)如果希望自定义TabHost标题部分的显示内容需要使

Android—API中文文档

Android2.2——API中文文档 LLGYZB@https://www.doczj.com/doc/50668419.html, 目录: (1)—— TextView (2)—— EditText (3)—— AccessibilityService (4)—— Manifest (5)—— View (6)—— ImageView (7)—— ImageButton (8)—— QuickContactBadge (9)—— ZoomButton (10)—— CheckBox (11)—— RadioButton (12)—— Button (13)—— ToggleButton (14)—— ViewStub (15)——GridView 一、TextView 1、结构 https://www.doczj.com/doc/50668419.html,ng.Object ?android.view.View ?android.widget.TextView 2、已知直接子类: Button, CheckedTextView, Chronometer, DigitalClock, EditText 3、已知间接子类: AutoCompleteTextView, CheckBox, CompoundButton, ExtractEditText, MultiAutoCompleteTextView, RadioButton, ToggleButton

二、EditText 1、结构 https://www.doczj.com/doc/50668419.html,ng.Object ? android.view.View ? android.widget.TextView ? android.widget.EditText 已知直接子类: AutoCompleteTextView, ExtractEditText 已知间接子类: MultiAutoCompleteTextView 2、xml 属性

Android笔试95题

内测/月考 理论部分 注意:考试结束试卷必须交回,答案填写在答题卡上

1、下面关于Android dvm的进程和Linux的进程,应用程序的进程说法正确的是?(选择一项) A、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有 一个独立的Dalvik虚拟机实例.而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念. B、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,不一定拥有 一个独立的Dalvik虚拟机实例.而每一个DVM不一定都是在Linux中的一个进程,所以说不是一个概念. C、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个 独立的Dalvik虚拟机实例.而每一个DVM 不一定都是在Linux 中的一个进程,所以说不是一个概念. D、DVM指dalivk的虚拟机.每一个Android应用程序都在它自己的进程中运行,都拥有一个 独立的Dalvik虚拟机实例.而每一个DVM都是在Linux 中的一个进程,所以说可以认为是同一个概念. 2、下列选项哪个不是Activity启动的方法?(选择一项) A、goToActivity B、startActivity C、startActivityFromChild D、startActivityForResult 3、解析xml 的方式有()(选择两项) A、字符器类型 B、流方式 C、dom D、SAX 4、下列哪一个不属于Activity的生命周期方法(选择一项) A、onInit B、onStart C、onStop D、onPause 5、对于XML布局文件中的视图控件,layout_width属性的属性值不可以是什么?(选择一项) A、match_parent B、fill_parent C、wrap_content D、match_content 6、对一些资源以及状态的操作保存,最好是保存在Activity生命周期的哪个函数中进行?(选择一项) A、onStart B、onPause C、onCreate D、onResume

安卓开发考试复习题含答案

1 安卓核心组件有哪些?What are the Android core components? 提供界面显示的Activtiy, 提供后台计算的Service, 提供进程间通信的Intent 提供广播接收的BroadcastRsceiver. 2 安卓 key features 有哪些? Intergrated browser SQLite Media support Wireless services DVM Application framework Rich development environment 3安卓用什么数据库?Android with what database? SQLite 4几个流行的移动平台各自的 IDE 是什么? IOS Xcode Android Eclipse Windows phone Visual Studio 黑莓Native平台 5 R.java 是什么文件?干什么用的?在什么地方?What is R.java file? What

for? In what place? R.java文件是Android项目自动生成的终态类 R.java文件除了有自动标识资源的"索引"功能之外,还有另一个主要的功能,当"res"目录中的某个资源在应用中没有被使用到,在该应用被编译的时候系统就不会把对应的资源编译到该应用的APK包中,这样可以节省Android手机的资源。 "gen/"目录下 6安卓平台架构分为几层?各是什么?The Android platform structure is divided into several layers? Each is what? Android 系统分为四层,从下往上分别是 Linux Kernel, Libraries 和Android Runtime, Application Framework, Applications. 7创建一个 UI 并运行之,有哪几个步骤? 创建一个Activity 把UI和Activity关联起来 注册这个Activity 8 Int ent 有几个组件?各是干什么用的?哪些组件是必须存在的,哪些是可选的,在Manifest中intent filter 是如何声明的? Componment name(接收者名字) Action(指定需要被执行的动作) Data(指定用于操作的数据) Category(指定目标应用程序组件的行为) Extras

Android开发之- API包类最全面说明

android-->包含应用平台和在定义应用程序所用到android系统功能的应用权限的资料文件类, android.accessibilityservice-->这个包中的类用于为无障碍服务的开发提供替代或增强的反馈给用户 android.accounts--> android.animation-->这些类提供动画系统的功能特性,它允许使用任何类型的动画对象属性,int,float和16进制颜色值都是默认支持的,也可以通过自定义一个动画让告诉应用按你的设置去运行 android.app-->封装好的Andorid全部应用程序模型类 android.app.admin-->提供系统级的设备管理功能,允许您创建安全感知的应用程序用于android系统企业级别的设置,如可以让你的应用程序也能执行屏幕锁定,屏幕亮度调节、出厂设置等功能 android.app.backup-->此包下的类包含了备份和修复应用程度功能的,如果用户清除设备上的数据或升级到一个新的系统,当应用程序在重新安装时可通过已启用的备份用于修复用户之前的数据 android.appwidget-->此包下的类包含在创建一个应用小部件时所必需要组件,用户可将它嵌入在其他应用程序(如主屏幕),无需启动一个新的活动就可快速访问自身应用程序的数据和服务, android.bluetooth-->此包下的类提供手机蓝牙管理功能,例如搜索设备,连接设备,管理设备之间的数据的传输, android.content-->设备上的数据访问和发布。 android.content.pm-->此包下的类提供访问一个应用包的相应信息,信息内容包括:活动,权限,服务,应用签名,提供者, android.content.res-->此包下的类用于访问应用程序的资源,例如:原文件,颜色,图片,多媒体等,和一些可影响设备运行的重要配置的详细信息 android.database-->此包下类的用于探索通过内容提供者返回的数据 android.database.sqlite-->此包下类的包含SQLITE数据库管理类,用于一个应用程序去管理的它所拥有的私有的数据库 android.drm-->此包下的用于管理DRM系统机制和控件DRM机制的插件的功能,DRM解释:DRM提供一套机制对用户使用手机上的媒体内容(如ringtong, mp3等)进行限制,如限制拷贝给第三方,限制使用次数或时限等,从而保护内容提供商的权利, android.gesture-->此包下的类用于创建,识别,加载,保存一个手势 android.graphics-->此包下的类提供一些低级的绘图功具,例如:画布,颜色过滤,顶点坐标,和长方形以便于发开者的绘图直接处理在设备屏幕上, android.graphics.drawable.shapes-->此包下的类用于几何绘图 android.hardware-->提供支持硬件功能的类,例如:照像机和其它传感器 android.hardware.input--> https://www.doczj.com/doc/50668419.html,b-->提供支持android系统设备的USB接口与外围设备的相连 android.inputmethodservice-->输入法的基类 android.location-->包括的类用于定义android地理位置和与此关系的服务 android.media-->提供管理各种各样音频和视频接口的类 android.media.audiofx-->提供管理多媒体框架中实现的音频效果的 android.media.effect-->提供允许你运用各种图像和视频的视觉效果的类 android.mtp-->提供的API让你直接连接照像机和其它设备与之互动,

API-5LD中文版

抗腐蚀合金复合钢管或衬管规范 API 5LD规范 第二版1998年7月 生效日期:1998年12月31日

特别说明 API出版物仅对普遍性问题做出了规定。对一些特殊情况,应查阅联邦、州和地方的有关法规。 API不为供应商、制造商和雇主承担其雇员在健康、安全风险及预防措施进行教育、培训和装备等方面的义务。亦不承担他们因违反联邦、州和地方法律而应负的责任。 有关健康、安全风险及预防措施方面的详细资料或情况可向雇主、供应商或制造商索取,或从材料的安全数据表处得到。 API出版物不能以任何方式解释为授予任何人权利不制造、销售或使用属于专利证书所涉及的方法、设备或产品。同样不能解释为保证任何人因侵犯专利权而不承担责任。 一般情况下,API标准每5年至少进行一次复审、修改、重新确认或予以撤销。有时审定周期会延长,延长期不超过两年。所以,除已授权再版延期外,作为现行的API标准自出版之日起,5年后不再有效。可向API勘探开发部[电话:(202)6828000]了解本出版物情况。API每年颁布一次出版物和资料目录,每季度订正一次变动情况,API地址位于:American Petroleum Institute,1220,L Street,N.W.Washington,D.C.20005。 本文件是在保证获得适当通知和参与开发工作的基础上,根据API标准化程序制定的,称之为API标准。涉及到本标准内容的解释和本标准制定程序的问题,请直接致函美国石油学会勘探开发部部长。地址:American Petroleum Institute,1220,L Street,N.W.Washington,D.C.20005。要求复制或翻译本资料全文或任一部分也可致函商务部长。 API标准的出版便于已被证实的安全可靠的技术工艺及具体做法的推广应用。考虑到这些标准的使用时间和地点,这些标准无意排除对采用可靠技术方法的需求。API标准的制定和出版无意以任何方式禁止任何人采用其它标准。 按照API标准中的标志要求,为其设备、原料做标志的任何制造厂,应对其所采用标准的所有要求负责。美国石油学会不声明、担保或确认该产品均确实符合相应的API标准。

相关主题
文本预览
相关文档 最新文档