??xml version="1.0" encoding="utf-8" standalone="yes"?> 在一个Android 应用中有如下的四U组Ӟ(x) 在应用中一旦决定用了哪些lgQ就需要在AndroidManifest.xml文g中列丑և来?br />
Activity 打开新的面Ӟ前一个页面将?x)暂停,攄C个历史堆栈中Q用户可以用后退键浏览前面的面Q页面也可以从堆栈中删除。Android?x)?f)每一个从主页面home screenQidle界面Q)启动的应用维护一个历史堆栈列表?/p>
Intent and Intent Filters 一个ActivityZ表明能够处理某些IntentQAndroid设计了一个相关的cIntentFilterQActivity?IntentFilter中决定它能够处理的Intent动作cdQIntentFilter需要在AndroidManifest.xml文g中进行声 明?/p>
从一个页面到另外一个页面蟩转的依据在于发出的IntentQؓ(f)了向前浏览,Activity调用startActivity(myIntent). Androidpȝ在所有安装的应用E序中查找intent filtersQ找出最能够匚wmyIntent的Activity。新的activity被启动Qintent被传入。有如下两个关键点:(x) Intent Receiver Service Content Provider 转蝲自:(x)http://blog.csdn.net/lixinye0123/archive/2008/04/16/2296916.aspx 1)E序?br />
Android 包含一些C/C++库,q些库能被Androidpȝ中不同的lg使用。它们通过 Android 应用E序框架为开发者提供服务。以下是一些核心库Q?br />
* pȝ C ?- 一个从 BSD l承来的标准 C pȝ函数? libc )Q?它是专门为基?embedded linux 的设备定制的?br />
* 媒体?- Z PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回攑֒录制Q同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG ?br />
* Surface Manager - Ҏ(gu)C子pȝ的管理,q且为多个应用程序提 供了2D?D囑ֱ的无~融合?br />
* LibWebCore - 一个最新的web览器引擎用Q支持Android览器和一个可嵌入的web视图?br />
* SGL - 底层?D囑Ş引擎 4.、Linux Kernel(Linux 内核)
]]>
* Activity zdlg
* Intent Receiver 接受处理lg
* Service 服务lg
* Content Provider 内容提供lg
一个Android 应用q不需要同时具有这四个lgQ应用可以组合这些组件?/p>
Activities是最普遍的组Ӟ在应用中通常用于昄一个屏q(面Q的内容Q仅仅一个屏q(面Q的内容。开发h员需要从Activity?cȝ承下来,理UI昄和UI的反馈事件。大多数应用E序都会(x)有多个屏q(面Q的内容Q如一个文本消息的应用E序Q第一个页面要昄联系人列表,W二 个页面要写东西给选定的联pMhQ其他页面显C旧的文本内Ҏ(gu)者其他等{。每一个页面都被当做一个ActivityQ活动组ӞQ移动到其他面意味着开?了一个新的ActivityQ活动组Ӟ。在某些场景下,一个Activity可以q回值给前一个ActivityQ如一个页面选择了一张图片,可以q回 q张囄l调用者(ActivitQ?/p>
Android使用一个叫I(xin)ntent的类从一个页面移动到另外一个页面。一个Intent描述了应用将要做的事情,是一U动作行为。最重要的有两点Q?动作的类型和动作所捎带的参敎ͼ数据Q,典型的动作类型ؓ(f)MAINQactivity的正门)QVIEW, PICK, EDIT{等。参数数据以URI形式来表C。例如,Z查看一个h的联pM息,需要创Z个IntentQ动作类型ؓ(f)VIEWQh名ؓ(f)参数数据Q需要格?化ؓ(f)URIQ?/p>
* Activities 能够重新被?br />
* Activities 在Q何时候都可以被替换,只要一个Activity讄了相同的IntentFilter
在应用程序中Q针对外部事仉要执行一些动作来反馈Q可以用IntentReceivercR例如:(x)来了一个电(sh)话,或者数据通道可用Q或者晚上到了?Intent Receiver没有UI的显C,管可以通过NotificationManager 通知用户某些有趣的事情发生了。Intent Receivers也需要在AndroidManifest.xml中进行声明,当然也可以在E序中调?Context.registerReceiver()接口动态声明。同时在应用E序没有跑v来的时候也能够调用Intent ReceiversQ当一个Intent Receivers被触发时QAndroidpȝ会(x)启动q个应用E序。应用程序也能够通过Context.broadcastIntent()q播他们 的Intent?/p>
一个Service是没有UIQ一直运行在后台的代码组件。一个好的例子:(x)播放器从一个播攑ֈ表中播放歌曲。在一个播攑֙应用中,大概?x)有一个或多个 Activitylg允许用户选择歌曲和播攑֮们,歌曲播放代码不应该放在Activitylg中,因ؓ(f)我们希望一直能够听歌,甚至切换C其他面。所 以,播放器页面应该启动一个服务组ӞContext.startService()Q来播放歌曲。Androidpȝ会(x)保持serviceq行直到?l束Q可以参?#8220;Android 应用的生命周?#8221;一文)。可以用Context.bindService()接口q接上一个服务(如果q时候服务没有启动,q接?x)导致服务启动)Q连?上之后,可以和服务q行通讯。像播放器的例子Q可以允许暂停,重绕{等?/p>
应用E序可以在文件中Q数据库或者其他设备存储他们的数据。Content Provider用于各个应用程序的数据q行׃nQContent Provider是一个类Q执行一套标准的Ҏ(gu)Q让其他的应用程序存储和获取Content Provider所处理的数?br />
]]>
Android的系l架构和其操作系l一P采用了分层的架构。从架构囄Qandroid分ؓ(f)四个层,从高层到低层分别是应用程序层、应用程序框架层、系l运行库层和linux核心?br />
1、Application是在framework的基上开发的各种应用?br />
包括email客户端,SMS短消息程序,日历Q地图,览器,联系人管理程序等。所有的应用E序都是使用JAVA语言~写?br />
2、Application Framework(应用E序框架)
Framework是android为应用开发者设计的一套Y件框Ӟ提供了丰富的api和一些现成的开发元素。Framework是采用java语言实现的。在NDK出来之前Qandroid应用开发者基本上只能用java来开发应用?br />
Android使用JNIq接了libraries和framework?br />
在每个应用后面的是一pd的服务和pȝ, 其中包括;
* 丰富而又可扩展的视图(Views)Q可以用来构建应用程序, 它包括列?lists)Q网?grids)Q文本框(text boxes)Q按?buttons)Q?甚至可嵌入的web览器?br />
* 内容提供?Content Providers)使得应用E序可以讉K另一个应用程序的数据(如联pMh数据?Q?或者共享它们自q数据
* 资源理?Resource Manager)提供 非代码资源的讉KQ如本地字符Ԍ囑ŞQ和布局文g( layout files )?br />
* 通知理?(Notification Manager) 使得应用E序可以在状态栏中显C定义的提CZ息?br />
* zd理? Activity Manager) 用来理应用E序生命周期q提供常用的D回退功能
3、Libraries(pȝq行?
包含了核心库、第三方库和android虚拟机。androidq没有直接采用传l的j2se或j2me的java虚拟机,而是自己建立了一个称为dalvik的虚拟机Q号U更节省字节码的I间Q性能更好?/p>
* 3D libraries - ZOpenGL ES 1.0 APIs实现;该库可以使用g 3D加?如果可用)或者用高度优化的3D软加速?br />
* FreeType -位图(bitmap)和矢?vector)字体昄?br />
* SQLite - 一个对于所有应用程序可用,功能强劲的轻型关pd数据库引擎?br />
2)Android q行?br />
Android 包括了一个核心库Q该核心库提供了JAVA~程语言核心库的大多数功能?br />
每一个Android应用E序都在它自qq程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同旉效地q行多个虚拟pȝ?Dalvik虚拟机执?.dex)的Dalvik可执行文Ӟ该格式文仉对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的c都l由JAVA~译器编译,然后通过SDK??"dx" 工具转化?dex格式p拟机执行?br />
Dalvik虚拟Z赖于linux内核的一些功能,比如U程机制和底层内存管理机?/p>
Android 的核心系l服务依赖于 Linux 2.6 内核Q如安全性,内存理Q进E管理, |络协议栈和驱动模型?Linux 内核也同时作为硬件和软g栈之间的抽象?/p>
关于 androidpȝ的介l,google 下可以找到很多解释,q里不做解释
选择android开发的原因如下Q?br />
1.Android选择Java作ؓ(f)开发语a
2.优秀的设计理?br />
3.丰富的终端优?
]]>
具体使用可以参考:(x)http://www.ibm.com/developerworks/cn/xml/tips/x-jaxmsoap/
对于接受的SOAP消息Q可以直接加载成xmlq行解析Q如下:(x)
SOAPMessage reply = connection.call(message, urlEndpoint);
ByteArrayOutputStream respbty = new ByteArrayOutputStream();
reply.writeTo(respbty);
String respstr = new String(respbty.toByteArray());
logger.info("接收SOAP消息?"+respstr);
]]>
1.下蝲最新的Axis1.4?br />
2.在Axis1.4\lib 目录下编写一个批命o(h)Q内容如下:(x)
D:\j2sdk1.4.2_09\bin\java -cp "d:\axis-1_4\lib\axis.jar;d:\axis-1_4\lib\axis-ant.jar;d:\axis-1_4\lib\commons-discovery-0.2.jar;d:\axis-1_4\lib\commons-logging-1.0.4.jar;d:\axis-1_4\lib\jaxrpc.jar;d:\axis-1_4\lib\log4j-1.2.8.jar;d:\axis-1_4\lib\saaj.jar;d:\axis-1_4\lib\wsdl4j-1.5.1.jar" org.apache.axis.wsdl.WSDL2Java MsgIncept.wsdl -o d:\axis-1_4\lib
主要的这句:(x)org.apache.axis.wsdl.WSDL2Java MsgIncept.wsdl -o D:\other_dk\axis-1_4\lib
MsgIncept.wsdl 是Ҏ(gu)提供的wsdl ?o 是输出的目录
3.调用的时候注意用soap12的Stub卛_?
]]>
wsdl2java -fe <frontend name>* -db <data binding name>* -wv <[wsdl version]>*
-p <[wsdl namespace =]Package Name>* -sn <service-name> -b <binding-name>*
-catalog <catalog-file-name> -d <output-directory> -compile
-classdir <compile-classes-directory> -impl -server -client -all
-autoNameResolution -defaultValues<=class name for DefaultValueProvider> -ant
-nexclude <schema namespace [= java packagename]>* -exsh <(true, false)>
-dns <(true, false)> -dex <(true, false)> -validate -keep
-wsdlLocation <wsdlLocation attribute> -xjc<xjc arguments> -noAddressBinding -h
-v -verbose -quiet <wsdlurl>
http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html
我们在命令行下输?wsdl2java -p hs.cxf.client HelloWorld.wsdl 来指定生成的客户端包目录?br />
客户端调用代?br />
try {
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean ();
factory.setServiceClass(WebServiceSample.class);
factory.setAddress("http://127.0.0.1:9080/cxfTest/ws/HelloWorld");
Object obj = factory.create();
System.out.println(obj == null ? "NULL":obj.getClass().getName());
if(obj != null){
WebServiceSample ws = (WebServiceSample)obj;
String str = ws.say("test");
System.out.println(str);
str = ws.say("1111");
System.out.println(str);
User u = new User();
JAXBElement <String> je =
new JAXBElement <String>(
new QName("http://bean.cxf.hs","name"),
String.class,"张三");
u.setName(je);
str = ws.sayUserName(u);
System.out.println(str);
//通过对象来交?/span>
ReqBean req = new ReqBean();
req.setExp(new JAXBElement <String>(
new QName("http://bean.cxf.hs","exp"),
String.class,"<exp>111<exp>"));
req.setSeqId(new JAXBElement <String>(
new QName("http://bean.cxf.hs","seqId"),
String.class,"12345678"));
RespBean resp = ws.action(req);
System.out.println("resp_id:"+resp.getRespId().getValue());
System.out.println("resp_exp:"+resp.getExp().getValue());
}
} catch (Exception ex) {
ex.printStackTrace();
}
q行此代码,查看l果卛_
依赖包如?
cxf-2.1.4.jar
jaxb-api-2.1.jar
geronimo-annotation_1.0_spec-1.1.1.jar
geronimo-ws-metadata_2.0_spec-1.1.2.jar
jaxws-api.jar
stax-api-1.0-2.jar
jaxb-impl-2.1.9.jar
geronimo-activation_1.1_spec-1.0.2.jar
xml-resolver-1.2.jar
XmlSchema-1.4.3.jar
wsdl4j-1.6.2.jar
saaj-api-1.3.jar
jsr173_1.0_ri.jar
]]>
]]>
cronExpression配置说明(|络上摘取)
字段 |
允许?/span> |
允许的特D字W?/span> |
||
U?/span> |
0-59 |
, - * / |
||
?/span> |
0-59 |
, - * / |
||
时 |
0-23 |
, - * / |
||
日期 |
1-31 |
, - * ? / L W C |
||
月䆾 |
1-12 或?/span> JAN-DEC |
, - * / |
||
星期 |
1-7 或?/span> SUN-SAT |
, - * ? / L C # |
||
q_(d)可选) |
留空, 1970-2099 |
, - * / |
Cron 的小说?/span>
表示方式 |
意义 |
"0 0 12 * * ?" |
Fire at 12pm (noon) every day |
"0 15 10 ? * *" |
Fire at 10:15am every day |
"0 15 10 * * ?" |
Fire at 10:15am every day |
"0 15 10 * * ? *" |
Fire at 10:15am every day |
"0 15 10 * * ? 2005" |
Fire at 10:15am every day during the year 2005 |
"0 * 14 * * ?" |
Fire every minute starting at 2pm and ending at 2:59pm, every day |
"0 0/5 14 * * ?" |
Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day |
"0 0/5 14,18 * * ?" |
Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day |
"0 0-5 14 * * ?" |
Fire every minute starting at 2pm and ending at 2:05pm, every day |
"0 10,44 14 ? 3 WED" |
Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. |
"0 15 10 ? * MON-FRI" |
Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday |
"0 15 10 15 * ?" |
Fire at 10:15am on the 15th day of every month |
"0 15 10 L * ?" |
Fire at 10:15am on the last day of every month |
"0 15 10 ? * 6L" |
Fire at 10:15am on the last Friday of every month |
"0 15 10 ? * 6L" |
Fire at 10:15am on the last Friday of every month |
"0 15 10 ? * 6L 2002-2005" |
Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005 |
"0 15 10 ? * 6#3" |
Fire at 10:15am on the third Friday of every month |