免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2130 | 回复: 0
打印 上一主题 下一主题

Jollen 的 Android 教學,#26: 強大的Intent機制 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-24 09:48 |只看该作者 |倒序浏览

                        
                                                      
                              
什麼是Intent(意圖)?
強大的事件處理「Intent」(意圖)是Android很強大的一種機制。
在 Android
應用程式框架中,有一個非常聰明的事件處理機制,稱之為「Intent」。Intent(意圖)的作用與事件(event)很像,但與傳統的事件處理仍然
有些差異。傳統的事件處理,講求的是「處理者(handler)的觸發」,當一事件發生時,便callback讓事件的處理者,或是直接將該事件轉送
(forward)給應用程式,由應用程式決定處理方式。
在「Intent」這樣的事件處理觀念裡,Android 試圖將事件解釋為「應用程式的意圖」或是「使用者的意圖」,並試著去解釋該意圖的目的,若 Android 系統本身能理解應用程式的意圖,便會「自行」去處理該意圖所應執行的工作。
關於前述教學提到的Intent
在前面的教學裡,我們用到二次Intent如下:
1. 自行定義一個Intent、設定Service可接收此Intent,並透過「送出Intent給框架」的方式,請框架啟動該Service
2. 使用Android內部定義的ACTION_VIEW intent,來「檢視」(view)一個「URL」資料,當框架看到內部定義的ACTION_VIEW intent時,便「自行」處理該Intent;處理的方式是啟動WebView並連上網站
以前述的教學為例,使用內建的“ACTION_VIEW”意圖就可以很容易做出一個「啟動瀏覽器(WebView類別)上網」的應用程式。
透過這二個例子我們知道,Intent可以是自行定義與框架內部定義二種。框架定義的Intent提供很多方便實用的功能,以下我們說明Android內建Intent的美麗之處。
Android內建的Intent
為了讓大家更容易了解Intent的基本觀念,我們採用「體驗」的方式來說明如何使用內建的Intent。現在,我們列舉以下三個情境,並分別實作其範例:
1. HelloIntentDialer: 啟動撥號器(dialer)並撥號
2. HelloIntentMusic: 使用者按下「Select Music」後,可以由音樂清單裡選擇音樂並撥放
3. HelloIntentWallpaper: 啟動Android內建的「背景圖選擇器」,讓使用者更換背景
第二個範例”HelloIntentMusic”其實是ApiDemo裡的範例,而且是很容易能了解Intent內涵的好程式。
一個基本的Intent包含二項資訊:
1. action
2. data
Intent的action指定這個Intent的「動作」是什麼,框架會依指定的動作進行處理;有些action可以附帶一筆資料,這個資料是以Uri的格式撰寫,在HelloIntentDialer的範例會再做說明。
內建的Intent有哪些呢?請參考Android Reference Guide中的Intent類別說明。上述三個範例分別使用以下三個Intent:
1. ACTION_CALL: 撥號
2. ACTION_GET_CONTENT: 啟動內容選取器
3. ACTION_SET_WALLPAPER: 設定Wallpaper
在進行範例講解前,可以先行閱讀Intent類別的說明。ACTION_CALL是一個內建的Intent,我們只要產生一個Intent物件,並定義其「action」為ACTION_CALL即可通知框架「打電話」。
Android內建的Intent是相當實用的應用開發機制,同時也是Android OS最具代表性的機制之一。Android內建的Intent還分為二種action:
1. Activity Action: 啟動Activity的action
2. Broadcast Action: 透過廣撥器處理的action
第一種action是activity action,用途是通知框架啟動Activity,這裡提出的三個範例,都是使用activity action。Broadcast action在Broadcast的教學裡再做說明。
                           
                           
                                       
                           
                           
--jollen
                        
                     
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/14644/showart_2005524.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP