??xml version="1.0" encoding="utf-8" standalone="yes"?>
代码片段
new AlertDialog.Builder(Frm_Addbills.this).setTitle("提示").setMessage(
"定退?").setIcon(R.drawable.quit).setPositiveButton("定",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
billdb.close();
finish();
}
}).setNegativeButton("取消",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).show();
}
copy from ColaBox_source 未完待箋..
]]>
Activity
Intent Receiver
Service
Content Provider
当我们明了我们的应用需要哪些构造块后,我们需要在AndroidManifest.xml中登记这些构造块的清单。这是一个XML配置文gQ这个配|文件用于定义我们的应用E序的组件、组件的功能及必要条件等。这个配|文件是每个Android应用必需的。对于AndroidMainfest.xml的SchemaQ参考SDK包附带的文档。以下,我们对四U构造块做一些说明:
一、Activity
Activity是Android构造块中最基本的一U,在应用中Q一个activity通常是一个单独的屏幕。每一个activity都被实现Z个独立的c,q且l承于Activityq个基类。这个activitycd会显C由几个Views控gl成的用h口,q对事g做出响应。大部䆾的应用都会包含多个的屏幕。例如,一个短消息应用E序会有一个屏q用于显CpMh列表Q第二个屏幕用于写短消息Q同时还会有用于览旧短消息及进行系l设|的屏幕。每一个这L屏幕Q就是一个activity。从一个屏q导航到另一个屏q是很简单的。在一些应用中Q一个屏q甚至会q回值给前一个屏q?/span>
当一个新的屏q打开后,前一个屏q将会暂停,q保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏q。当屏幕不再使用Ӟq可以从历史堆栈中删除。默认情况下QAndroid会保留从主屏幕到每一个应用的q行屏幕?/span>
Android使用了Intentq个Ҏc,实现在屏q与屏幕之间Ud。Intentcȝ于描qC个应用将会做什么事。在Intent的描q结构中Q有两个最重要的部分:动作和动作对应的数据。典型的动作cd有:MAINQactivity的门P、VIEW、PICK、EDIT{。而动作对应的数据则以URI的Ş式进行表C。例如:要查看一个h的联pL式,你需要创Z个动作类型ؓVIEW的intentQ以及一个表C个h的URI?/span>
与之有关pȝ一个类叫IntentFilter。相对于intent是一个有效的做某事的hQ一个intent filter则用于描qC个activityQ或者Intent ReceiverQ能够操作哪些intent。一个activity如果要显CZ个h的联pL式时Q需要声明一个IntentFilterQ这个IntentFilter要知道怎么d理VIEW动作和表CZ个h的URI。IntentFilter需要在AndroidManifest.xml中定义?/span>
通过解析各种intentQ从一个屏q导航到另一个屏q是很简单的。当向前DӞactivity会调用startActivity(Intent myIntent)Ҏ。然后,pȝ会在所有安装的应用E序中定义的IntentFilter中查找,扑ֈ最匚wmyIntent的Intent对应的activity。新的activity接收到myIntent的通知后,开始运行。当startActivityҎ被调用将触发解析myIntent的动作,q个机制提供了两个关键好处:
A、Activities能够重复利用从其它组件中以Intent的Ş式生的一个请求;
B、Activities可以在Q何时候被一个具有相同IntentFilter的新的Activity取代?/span>
二、Intent Receiver
当你希望你的应用能够对一个外部的事gQ如当电话呼入时Q或者数据网l可用时Q或者到了晚上时Q做出响应,你可以用一个Intent Receiver。虽然Intent Receiver在感兴趣的事件发生时Q会使用NotificationManager通知用户Q但它ƈ不能生成一个UI。Intent Receiver在AndroidManifest.xml中注册,但也可以在代码中使用Context.registerReceiver()q行注册。当一个intent receiver被触发时Q你的应用不必对h调用intent receiverQ系l会在需要的时候启动你的应用。各U应用还可以通过使用Context.broadcastIntent()它们自qintent receiverq播l其它应用程序?/span>
三、Service
一个Service是一D长生命周期的,没有用户界面的程序。比较好的一个例子就是一个正在从播放列表中播放歌曲的媒体播放器。在一个媒体播攑֙的应用中Q应该会有多个activityQ让使用者可以选择歌曲q播放歌曌Ӏ然而,音乐重放q个功能q没有对应的activityQ因Z用者当然会认ؓ在导航到其它屏幕旉乐应该还在播攄。在q个例子中,媒体播放器这个activity会用Context.startService()来启动一个serviceQ从而可以在后台保持音乐的播放。同Ӟpȝ也将保持q个service一直执行,直到q个serviceq行l束。另外,我们q可以通过使用Context.bindService()ҎQ连接到一个service上(如果q个serviceq没有运行将启动它)。当q接C个service之后Q我们还可以service提供的接口与它进行通讯。拿媒体播放器这个例子来_我们q可以进行暂停、重播等操作?/span>
四、Content Provider
应用E序能够它们的数据保存到文件中、SQL数据库中Q甚xM有效的设备中。当你想你的应用数据与其它的应用共享时QContent Provider会很有用。一个Content ProvidercdC一l标准的ҎQ从而能够让其它的应用保存或d此Content Provider处理的各U数据类型?/span>
更详l的Content Provider资料Q可以参考附带文档中的Accessing Content Providers?br />
五、Intentc?br />
Intent负责对应用中一ơ操作的动作、动作涉及数据、附加数据进行描qͼAndroid则根据此Intent的描qͼ负责扑ֈ对应的组Ӟ?Intent传递给调用的组Ӟq完成组件的调用。因此,Intent在这里v着一个媒体中介的作用Q专门提供组件互相调用的相关信息Q实现调用者与被调 用者之间的解耦?br />