﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-C++ Coder-随笔分类-Android</title><link>http://www.cppblog.com/jackdongy/category/20486.html</link><description>HCP高性能计算架构，实现，编译器指令优化，算法优化，
  LLVM   CLANG   OpenCL   CUDA   OpenACC    C++AMP   OpenMP   MPI</description><language>zh-cn</language><lastBuildDate>Wed, 24 Apr 2013 15:10:02 GMT</lastBuildDate><pubDate>Wed, 24 Apr 2013 15:10:02 GMT</pubDate><ttl>60</ttl><item><title>[实例教程] Android中的Intent详细讲解</title><link>http://www.cppblog.com/jackdongy/archive/2013/04/24/199688.html</link><dc:creator>jackdong</dc:creator><author>jackdong</author><pubDate>Wed, 24 Apr 2013 06:19:00 GMT</pubDate><guid>http://www.cppblog.com/jackdongy/archive/2013/04/24/199688.html</guid><wfw:comment>http://www.cppblog.com/jackdongy/comments/199688.html</wfw:comment><comments>http://www.cppblog.com/jackdongy/archive/2013/04/24/199688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackdongy/comments/commentRss/199688.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackdongy/services/trackbacks/199688.html</trackback:ping><description><![CDATA[<a href="http://bbs.hiapk.com/thread-7959-1-1.html">http://bbs.hiapk.com/thread-7959-1-1.html<br /><a href="http://mobile.51cto.com/android-220033_1.htm">http://mobile.51cto.com/android-220033_1.htm</a><br /></a><br /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">在一个Android应用中，主要是由四种组件组成的，这四种组件可参考&#8220;Android应用的构成&#8221;。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">而这四种组件是独立的，它们之间可以互相调用，协调工作，最终组成一个真正的Android应用。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">在这些组件之间的通讯中，主要是由Intent协助完成的。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">Intent负责对应用中一次操作的动作、动作涉及数据、附加数据进行描述，Android则根据此Intent的描述，负责找到对应的组件，将 Intent传递给调用的组件，并完成组件的调用。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">因此，Intent在这里起着一个媒体中介的作用，专门提供组件互相调用的相关信息，实现调用者与被调用者之间的解耦。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">例如，在一个联系人维护的应用中，当我们在一个联系人列表屏幕(假设对应的Activity为listActivity)上，点击某个联系人后，希望能够跳出此联系人的详细信息屏幕(假设对应的Activity为detailActivity)</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">为了实现这个目的，listActivity需要构造一个 Intent，这个Intent用于告诉系统，我们要做&#8220;查看&#8221;动作，此动作对应的查看对象是&#8220;某联系人&#8221;，然后调用startActivity (Intent intent)，</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">将构造的Intent传入，系统会根据此Intent中的描述，到ManiFest中找到满足此Intent要求的Activity，系统会调用找到的 Activity，即为detailActivity，最终传入Intent，detailActivity则会根据此Intent中的描述，执行相应的操作。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><strong style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;"><strong style="word-wrap: break-word;">一、抽象描述要描述什么</strong></strong><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">在Android参考文档中，对Intent的定义是执行某操作的一个抽象描述(确实很抽象)。我们先来看看这里的抽象描述，到底描述了什么。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">首先，是要执行的动作(action)的一个简要描述，如VIEW_ACTION(查看)、EDIT_ACTION(修改)等，Android为我们定义了一套标准动作：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">MAIN_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">VIEW_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">EDIT_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">PICK_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">GET_CONTENT_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">DIAL_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">CALL_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">SENDTO_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">ANSWER_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">INSERT_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">DELETE_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">RUN_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">LOGIN_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">CLEAR_CREDENTIALS_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">SYNC_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">PICK_ACTIVITY_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">WEB_SEARCH_ACTION</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">此外，我们还可以根据应用的需要，定义我们自己的动作，并可定义相应的Activity来处理我们的自定义动作。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">其次，是执行动作要操作的数据（data），Android中采用指向数据的一个URI来表示，如在联系人应用中，一个指向某联系人的URI可能为：content://contacts/1。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">这种URI表示，通过 ContentURI这个类来描述，具体可以参考android.net.ContentURI类的文档。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">以联系人应用为例，以下是一些action / data对，及其它们要表达的意图：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">VIEW_ACTION content://contacts/1-- 显示标识符为"1"的联系人的详细信息</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">EDIT_ACTION content://contacts/1-- 编辑标识符为"1"的联系人的详细信息</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">VIEW_ACTION content://contacts/-- 显示所有联系人的列表</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">PICK_ACTION content://contacts/-- 显示所有联系人的列表，并且允许用户在列表中选择一个联系人，然后把这个联系人返回给父activity。例如：电子邮件客户端可以使用这个Intent，要求用户在联系人列表中选择一个联系人</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">另外，除了action和data这两个重要属性外，还有一些附加属性：&nbsp;</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">category（类别），被执行动作的附加信息。例如 LAUNCHER_CATEGORY 表示Intent 的接受者应该在Launcher中作为顶级应用出现；而ALTERNATIVE_CATEGORY表示当前的Intent是一系列的可选动作中的一个，这些动作可以在同一块数据上执行。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">type（数据类型），显式指定Intent的数据类型（MIME）。一般Intent的数据类型能够根据数据本身进行判定，但是通过设置这个属性，可以强制采用显式指定的类型而不再进行推导。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">component（组件），指定Intent的的目标组件的类名称。通常 Android会根据Intent 中包含的其它属性的信息，比如action、data/type、category进行查找，最终找到一个与之匹配的目标组件。但是，如果 component这个属性有指定的话，将直接使用它指定的组件，而不再执行上述查找过程。指定了这个属性以后，Intent的其它所有属性都是可选的。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">extras（附加信息），是其它所有附加信息的集合。使用extras可以为组件提供扩展信息，比如，如果要执行&#8220;发送电子邮件&#8221;这个动作，可以将电子邮件的标题、正文等保存在extras里，传给电子邮件发送组件。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">总之，action、 data/type、category和extras 一起形成了一种语言。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">这种语言使系统能够理解诸如&#8220;查看某联系人的详细信息&#8221;之类的短语。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">随着应用不断的加入到系统中，它们可以添加新的action、 data/type、category来扩展这种语言。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">应用也可以提供自己的Activity来处理已经存在的这样的&#8220;短语&#8221;，从而改变这些&#8220;短语&#8221;的行为。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><strong style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">二、Android如何解析Intent<br style="word-wrap: break-word;" /><br style="word-wrap: break-word;" /></strong><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">在应用中，我们可以以两种形式来使用Intent：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">直接Intent：指定了component属性的Intent(调用setComponent(ComponentName)或者setClass(Context, Class)来指定)。通过指定具体的组件类，通知应用启动对应的组件。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">间接Intent：没有指定comonent属性的Intent。这些Intent需要包含足够的信息，这样系统才能根据这些信息，在在所有的可用组件中，确定满足此Intent的组件。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">对于直接Intent，Android不需要去做解析，因为目标组件已经很明确，Android需要解析的是那些间接Intent，通过解析，将 Intent映射给可以处理此Intent的Activity、IntentReceiver或Service。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">Intent解析机制主要是通过查找已注册在AndroidManifest.xml中的所有IntentFilter及其中定义的Intent，最终找到匹配的Intent。在这个解析过程中，Android是通过Intent的action、type、category这三个属性来进行判断的，判断方法如下：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">如果Intent指明定了action，则目标组件的IntentFilter的action列表中就必须包含有这个action，否则不能匹配;</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">如果Intent没有提供type，系统将从data中得到数据类型。和action一样，目标组件的数据类型列表中必须包含Intent的数据类型，否则不能匹配。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">如果Intent中的数据不是content: 类型的URI，而且Intent也没有明确指定它的type，将根据Intent中数据的scheme (比如 http: 或者mailto: ) 进行匹配。同上，Intent 的scheme必须出现在目标组件的scheme列表中。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">如果Intent指定了一个或多个category，这些类别必须全部出现在组建的类别列表中。比如Intent中包含了两个类别：LAUNCHER_CATEGORY 和 ALTERNATIVE_CATEGORY，解析得到的目标组件必须至少包含这两个类别。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><strong style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">三、应用例子<br style="word-wrap: break-word;" /><br style="word-wrap: break-word;" /></strong><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">以下，以Android SDK中的便笺例子来说明，Intent如何定义及如何被解析。这个应用可以让用户浏览便笺列表、查看每一个便笺的详细信息。&nbsp;</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><ul type="1" style="word-wrap: break-word; margin: 0px 0px 0px 14px; padding: 0px; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;"><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&lt;manifest</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">xmlns:android="http://schemas.android.com/apk/res/android"</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">package="com.google.android.notepad"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&lt;application</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">android:icon="@drawable/app_notes"</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">android:label="@string/app_name"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;"></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&lt;provider</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">class="NotePadProvider"</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">android:authorities="com.google.provider.NotePad"</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;"></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&lt;activity</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">class=".NotesList"</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">android:label="@string/title_notes_list"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp;&nbsp;&lt;intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.MAIN"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.LAUNCHER"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp;&lt;/intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp;&nbsp;&lt;intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.VIEW"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.EDIT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.PICK"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.DEFAULT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;type android:value="vnd.android.cursor.dir/vnd.google.note"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp;&lt;/intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp;&nbsp;&lt;intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.GET_CONTENT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.DEFAULT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;type android:value="vnd.android.cursor.item/vnd.google.note"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp;&lt;/intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp; &lt;/activity&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;"></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;"></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp;&nbsp;&lt;activity class=".NoteEditor" android:label="@string/title_note"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp;&nbsp;&lt;intent-filter android:label="@string/resolve_edit"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.VIEW"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.EDIT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.DEFAULT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;type android:value="vnd.android.cursor.item/vnd.google.note"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp;&lt;/intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp;&nbsp;&lt;intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="android.intent.action.INSERT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.DEFAULT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;type android:value="vnd.android.cursor.dir/vnd.google.note"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp;&lt;/intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp; &lt;/activity&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;"></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;"></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp;&nbsp;&lt;activity class=".TitleEditor" android:label="@string/title_edit_title" android:theme="@android:style/Theme.Dialog"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp;&nbsp;&lt;intent-filter android:label="@string/resolve_title"&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;action android:value="com.google.android.notepad.action.EDIT_TITLE"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.DEFAULT"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.ALTERNATIVE"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;category android:value="android.intent.category.SELECTED_ALTERNATIVE"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp; &lt;type android:value="vnd.android.cursor.item/vnd.google.note"/&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp;&nbsp; &nbsp;&lt;/intent-filter&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&nbsp; &nbsp; &lt;/activity&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&lt;/application&gt;</li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px; list-style: decimal;">&lt;/manifest&gt;</li></ul><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" />复制代码<br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">例子中的第一个Activity是com.google.android.notepad.NotesList，它是应用的主入口，提供了三个功能，分别由三个 intent-filter进行描述：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">1、第一个是进入便笺应用的顶级入口（action为android.app.action.MAIN）。类型为android.app.category.LAUNCHER表明这个Activity将在Launcher中列出。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">2、第二个是，当type为vnd.android.cursor.dir/vnd.google.note（保存便笺记录的目录）时，可以查看可用的便笺（action为android.app.action.VIEW），或者让用户选择一个便笺并返回给调用者（action为 android.app.action.PICK）。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">3、第三个是，当type为vnd.android.cursor.item/vnd.google.note时，返回给调用者一个用户选择的便笺（action为android.app.action.GET_CONTENT），而用户却不需要知道便笺从哪里读取的。有了这些功能，下面的 Intent就会被解析到NotesList这个activity：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.MAIN }：与此Intent匹配的Activity，将会被当作进入应用的顶级入口。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.MAIN, category=android.app.category.LAUNCHER }：这是目前Launcher实际使用的 Intent，用于生成Launcher的顶级列表。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.VIEW data=content://com.google.provider.NotePad/notes }：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">显示"content://com.google.provider.NotePad/notes"下的所有便笺的列表，使用者可以遍历列表，并且察看某便笺的详细信息。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.PICK data=content://com.google.provider.NotePad/notes }：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">显示"content://com.google.provider.NotePad/notes"下的便笺列表，让用户可以在列表中选择一个，然后将选择的便笺的 URL返回给调用者。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.GET_CONTENT type=vnd.android.cursor.item/vnd.google.note }：和上面的action为pick的Intent类似，不同的是这个Intent允许调用者（在这里指要调用NotesList的某个 Activity）指定它们需要返回的数据类型，系统会根据这个数据类型查找合适的 Activity（在这里系统会找到NotesList这个Activity），供用户选择便笺。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">第二个Activity是com.google.android.notepad.NoteEditor，它为用户显示一条便笺，并且允许 用户修改这个便笺。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">它定义了两个intent-filter，所以具有两个功能。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">第一个功能是，当数据类型为 vnd.android.cursor.item/vnd.google.note时，允许用户查看和修改一个便签（action为 android.app.action.VIEW和android.app.action.EDIT）。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">第二个功能是，当数据类型为 vnd.android.cursor.dir/vnd.google.note，为调用者显示一个新建便笺的界面，并将新建的便笺插入到便笺列表中（action为android.app.action.INSERT）。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">&nbsp; &nbsp;&nbsp; &nbsp;有了这两个功能，下面的Intent就会被解析到NoteEditor这个activity：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.VIEW data=content://com.google.provider.NotePad/notes/{ID}} ：向用户显示标识为 ID的便笺。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.EDIT data=content://com.google.provider.NotePad/notes/{ID}}：允许用户编辑标识为ID的便笺。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=android.app.action.INSERT data=content://com.google.provider.NotePad/notes }：在&#8220;content://com.google.provider.NotePad/notes&#8221;这个便笺列表中创建一个新的空便笺，并允许用户编辑这个便签。当用户保存这个便笺后，这个新便笺的URI将会返回给调用者。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">最后一个Activity是com.google.android.notepad.TitleEditor，它允许用户编辑便笺的标题。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">它可以被实现为一个应用可以直接调用（在Intent中明确设置component属性）的类，不过这里我们将为你提供一个在现有的数据上发布可选操作的方法。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">在这个 Activity的唯一的intent-filter中，拥有一个私有的action： com.google.android.notepad.action.EDIT_TITLE，表明允许用户编辑便笺的标题。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">和前面的view和edit 动作一样，调用这个Intent 的时候，也必须指定具体的便笺（type为vnd.android.cursor.item/vnd.google.note）。不同的是，这里显示和编辑的只是便笺数据中的标题。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">&nbsp; &nbsp;&nbsp; &nbsp;除了支持缺省类别（android.intent.category.DEFAULT），标题编辑器还支持另外两个标准类别： android.intent.category.ALTERNATIVE和</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">android.intent.category.SELECTED_ALTERNATIVE。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">实现了这两个类别之后，其它 Activity就可以调用queryIntentActivityOptions(ComponentName, Intent[], Intent, int)查询这个Activity提供的action，而不需要了解它的具体实现；</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">或者调用addIntentOptions(int, int, ComponentName, Intent[], Intent, int, Menu.Item[])建立动态菜单。需要说明的是，在这个intent-filter中有一个明确的名称（通过android:label= "@string/resolve_title"指定），在用户浏览数据的时候，如果这个Activity是数据的一个可选操作，指定明确的名称可以为用户提供一个更好控制界面。</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">有了这个功能，下面的Intent就会被解析到TitleEditor这个Activity：</span><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;" /><span style="color: #444444; font-family: Tahoma, Helvetica, SimSun, sans-serif; background-color: #ffffff;">{ action=com.google.android.notepad.action.EDIT_TITLE data=content://com.google.provider.NotePad/notes/{ID}}：显示并且允许用户编辑标识为ID的便笺的标题。</span><img src ="http://www.cppblog.com/jackdongy/aggbug/199688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackdongy/" target="_blank">jackdong</a> 2013-04-24 14:19 <a href="http://www.cppblog.com/jackdongy/archive/2013/04/24/199688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>android的Handler</title><link>http://www.cppblog.com/jackdongy/archive/2013/04/24/199678.html</link><dc:creator>jackdong</dc:creator><author>jackdong</author><pubDate>Wed, 24 Apr 2013 02:55:00 GMT</pubDate><guid>http://www.cppblog.com/jackdongy/archive/2013/04/24/199678.html</guid><wfw:comment>http://www.cppblog.com/jackdongy/comments/199678.html</wfw:comment><comments>http://www.cppblog.com/jackdongy/archive/2013/04/24/199678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackdongy/comments/commentRss/199678.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackdongy/services/trackbacks/199678.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://www.cnblogs.com/keyindex/articles/1822463.htmlandroid的Handler前言　　学习android一段时间了，为了进一步了解android的应用是如何设计开发的，决定详细研究几个开源的android应用。从一些开源应用中吸收点东西，一边进行量的积累，一边探索android的学习研究方向。这里我首先选择了jwood的&nbsp;Stan...&nbsp;&nbsp;<a href='http://www.cppblog.com/jackdongy/archive/2013/04/24/199678.html'>阅读全文</a><img src ="http://www.cppblog.com/jackdongy/aggbug/199678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackdongy/" target="_blank">jackdong</a> 2013-04-24 10:55 <a href="http://www.cppblog.com/jackdongy/archive/2013/04/24/199678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Android中的Handler总结</title><link>http://www.cppblog.com/jackdongy/archive/2013/04/24/199677.html</link><dc:creator>jackdong</dc:creator><author>jackdong</author><pubDate>Wed, 24 Apr 2013 02:35:00 GMT</pubDate><guid>http://www.cppblog.com/jackdongy/archive/2013/04/24/199677.html</guid><wfw:comment>http://www.cppblog.com/jackdongy/comments/199677.html</wfw:comment><comments>http://www.cppblog.com/jackdongy/archive/2013/04/24/199677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jackdongy/comments/commentRss/199677.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jackdongy/services/trackbacks/199677.html</trackback:ping><description><![CDATA[<a href="http://www.pin5i.com/showtopic-android-handler.html">http://www.pin5i.com/showtopic-android-handler.html<br /><br /></a><strong style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">一、<span href="tools/ajax.aspx?t=topicswithsametag&amp;tagid=819" style="word-wrap: break-word; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; cursor: pointer; white-space: nowrap;">Handler</span>的定义:</strong><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 主要接受子</span><span href="tools/ajax.aspx?t=topicswithsametag&amp;tagid=18" style="word-wrap: break-word; line-height: 24px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; cursor: pointer; white-space: nowrap; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">线程</span><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">发送的数据, 并用此数据配合主线程更新</span><span href="tools/ajax.aspx?t=topicswithsametag&amp;tagid=29" style="word-wrap: break-word; line-height: 24px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; cursor: pointer; white-space: nowrap; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">UI</span><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">.</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 解释: 当应用程序启动时，</span><span href="tools/ajax.aspx?t=topicswithsametag&amp;tagid=149" style="word-wrap: break-word; line-height: 24px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; cursor: pointer; white-space: nowrap; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">Android</span><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI</span><span href="tools/ajax.aspx?t=topicswithsametag&amp;tagid=88" style="word-wrap: break-word; line-height: 24px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; cursor: pointer; white-space: nowrap; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">控件</span><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">，进行事件分发, 比如说, 你要是点击一个 Button ,Android会分发事件到Button上，来响应你的操作。&nbsp; 如果此时需要一个耗时的操作，例如: 联网读取数据，&nbsp; &nbsp; 或者读取本地较大的一个文件的时候，你不能把这些操作放在主线程中，，如果你放在主线程中的话，界面会出现假死现象, 如果5秒钟还没有完成的话，，会收到Android系统的一个错误提示&nbsp; "强制关闭".&nbsp; 这个时候我们需要把这些耗时的操作，放在一个子线程中,因为子线程涉及到UI更新，，Android主线程是线程不</span><span href="tools/ajax.aspx?t=topicswithsametag&amp;tagid=7" style="word-wrap: break-word; line-height: 24px; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #ff0000; cursor: pointer; white-space: nowrap; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">安全</span><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">的，也就是说，更新UI只能在主线程中更新，子线程中操作是危险的. 这个时候，Handler就出现了.,来解决这个复杂的问题 ,&nbsp; &nbsp; 由于Handler运行在主线程中(UI线程中),&nbsp; 它与子线程可以通过Message对象来传递数据, 这个时候，Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象，(里面包含数据)&nbsp; , 把这些消息放入主线程队列中，配合主线程进行更新UI。</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><strong style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">二、Handler一些特点</strong><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程),</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; 它有两个作用: (1):&nbsp; 安排消息或Runnable 在某个主线程中某个地方执行, (2)安排一个动作在不同的线程中执行</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp;&nbsp;</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; Handler中分发消息的一些方法</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; post(Runnable)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; postAtTime(Runnable,long)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; postDelayed(Runnable long)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; sendEmptyMessage(int)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; sendMessage(Message)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; sendMessageAtTime(Message,long)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; sendMessageDelayed(Message,long)</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; 以上post类方法允许你排列一个Runnable对象到主线程队列中,</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; &nbsp; sendMessage类方法, 允许你安排一个带数据的Message对象到队列中，等待更新.</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><strong style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;">三、Handler实例</strong><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; (1) 子类需要继承Hendler类，并重写handleMessage(Message msg) 方法, 用于接受线程数据</span><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><br style="word-wrap: break-word; line-height: 24px; font-family: Verdana, Helvetica, Arial, sans-serif; background-color: #ffffff;" /><span style="font-family: Verdana, Helvetica, Arial, sans-serif; line-height: 24px; background-color: #ffffff;">&nbsp; &nbsp; &nbsp; 以下为一个实例，它实现的功能为 : 通过线程修改界面Button的内容</span><div style="word-wrap: break-word; line-height: 24px; margin: 10px 0px; padding-top: 10px; padding-bottom: 5px; padding-left: 10px; width: 700px; border: 1px solid #cccccc; background-image: url(http://www.pin5i.com/templates/default/images/codebg.gif); background-color: #f7f7f7; overflow: hidden; font-family: Verdana, Helvetica, Arial, sans-serif; background-position: 0px 0px; background-repeat: no-repeat repeat;"><div id="code66518_-1" style="word-wrap: break-word;"><ol style="word-wrap: break-word; margin: 0px 0px 0px 10px; padding: 0px;"><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">public class MyHandlerActivity extends Activity {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; Button button;<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; MyHandler myHandler;<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; protected void onCreate(Bundle savedInstanceState) {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; super.onCreate(savedInstanceState);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; setContentView(R.layout.handlertest);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; button = (Button) findViewById(R.id.button);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; myHandler = new MyHandler();<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // 当创建一个新的Handler实例时, 它会绑定到当前线程和消息的队列中,开始分发数据<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // Handler有两个作用, (1) : 定时执行Message和Runnalbe 对象<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // (2): 让一个动作,在不同的线程中执行.<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // 它安排消息,用以下方法<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // post(Runnable)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // postAtTime(Runnable,long)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // postDelayed(Runnable,long)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // sendEmptyMessage(int)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // sendMessage(Message);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // sendMessageAtTime(Message,long)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // sendMessageDelayed(Message,long)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp;&nbsp;<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // 以上方法以 post开头的允许你处理Runnable对象<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; //sendMessage()允许你处理Message对象(Message里可以包含数据,)<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; MyThread m = new MyThread();<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; new Thread(m).start();<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; /**<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; * 接受消息,处理消息 ,此Handler会与当前主线程一块运行<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; * */<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; class MyHandler extends Handler {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; public MyHandler() {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; public MyHandler(Looper L) {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; super(L);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; // 子类必须重写此方法,接受数据<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; @Override<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; public void handleMessage(Message msg) {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // TODO Auto-generated method stub<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.d("MyHandler", "handleMessage......");<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; super.handleMessage(msg);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // 此处可以更新UI<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Bundle b = msg.getData();<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String color = b.getString("color");<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MyHandlerActivity.this.button.append(color);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; class MyThread implements Runnable {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; public void run() {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Thread.sleep(10000);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (InterruptedException e) {<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // TODO Auto-generated catch block<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Log.d("thread.......", "mThread........");<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Message msg = new Message();<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Bundle b = new Bundle();// 存放数据<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; b.putString("color", "我的");<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; msg.setData(b);<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MyHandlerActivity.this.myHandler.sendMessage(msg); // 向Handler发送消息,更新UI<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; &nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;">&nbsp; &nbsp; }<br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px;"><br style="word-wrap: break-word; line-height: 21px;" /></li><li style="word-wrap: break-word; margin: 0px 0px 0px 2em; padding: 0px 0px 0px 10px; line-height: 1.8em; list-style-type: decimal-leading-zero; font-family: Monaco, Consolas, 'Lucida Console', 'Courier New', serif; font-size: 12px; border: 0px solid #eeeeee; background-color: #ffffff; color: #0099cc; background-position: initial initial; background-repeat: initial initial;">}<br style="word-wrap: break-word; line-height: 21px;" /></li></ol></div><em style="word-wrap: break-word; font-style: normal; line-height: 21px; margin-left: 43px; font-size: 12px; cursor: pointer; color: #0099cc !important;">复制代码</em></div><img src ="http://www.cppblog.com/jackdongy/aggbug/199677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jackdongy/" target="_blank">jackdong</a> 2013-04-24 10:35 <a href="http://www.cppblog.com/jackdongy/archive/2013/04/24/199677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>