日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android应用的基本组件介绍

發(fā)布時間:2023/12/15 Android 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android应用的基本组件介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Android應(yīng)用的基本組件介紹

Activity和View

Activity是Android應(yīng)用中負(fù)責(zé)與用戶交互的組件——大致上可以把它想象成Swing變成中的JFrame控件。不過它與JFrame的區(qū)別在于:JFrame本身可以設(shè)置布局管理器,不斷地向JFrame中添加組件,但Activity只能通過setContentView(View)來顯示指定組件。

View組件是所有UI控件、容器控件的基類,View組件就是Android應(yīng)用中用戶實實在在看到的部分。但View組件需要放到容器組件中,或者使用Activity將它顯示出來。如果需要通過某個Activity把指定View顯示出來,調(diào)用Activity的setContentView()方法即可。

setContentView()方法可接受一個View對象作為參數(shù),例如如下代碼:

//創(chuàng)建一個線性布局管理器 LinearLayout layout = new LinearLayout(this); //設(shè)置該Activity顯示layout super.setContentView(layout);

上面的程序通過代碼創(chuàng)建了一個LinearLayout對象(它是ViewGroup的子類,ViewGroup又是View的子類),接著調(diào)用Activity的setContentView(layout)把這個布局管理器顯示出來。
setContentView()方法也可接受一個布局管理資源的ID作為參數(shù),例如如下代碼:

//設(shè)置該Activity顯示main.xml文件定義的View setContentView(R.layout.main)

從這個角度來看,大致上可以把Activity理解成Swing中的JFrame組件。當(dāng)然,Activity可以完成的功能比JFrame更多。

Activity為Android應(yīng)用提供了可視化用戶界面,如果該Android應(yīng)用需要多個用戶界面,那么這個Android應(yīng)用將會包含多個Activity,多個Activity組成Activity棧,當(dāng)前活動的Activity位于棧頂。

Activity包含了一個setTheme(int resid)方法來設(shè)置其窗口的風(fēng)格,例如我們希望窗口不顯示標(biāo)題、以對話框形式顯示窗口,都可通過該方法來實現(xiàn)。

Service

Service與Activity的地位是并列的,它也代表一個單獨的Android組件。Service與Activity的區(qū)別在于:Service通常位于后臺運行,它一般不需要與用戶交互,因此Service組件沒有圖形用戶界面。

與Activity組件需要繼承Activity基類相似,Service組件需要繼承Service基類。一個Service組件被運行起來之后,它將擁有自己獨立的生命周期,Service組件通常用于為其他組件提供后臺服務(wù)或監(jiān)控其他組件的運行狀態(tài)。

BroadcastReceiver

BroadcastReceiver是Android應(yīng)用中另一個重要的組件,顧名思義,BroadcastReceiver代表廣播消息接收器。從代碼實現(xiàn)角度來看,BroadcastReceiver非常類似于事件編程中的監(jiān)聽器。與普通事件監(jiān)聽器不同的是:普通事件監(jiān)聽器監(jiān)聽的事件源是程序中的對象;而BroadcastReceiver監(jiān)聽的事件源是Android應(yīng)用中的其他組件。

使用BroadcastReceiver組件接收廣播消息比較簡單,開發(fā)者只要實現(xiàn)自己的BroadcastReceiver子類,并重寫onReceive(Context context, Intent intent)方法即可。當(dāng)其他組件通過sendBroadcast()、sendStickyBroadcast()或sendOrderedBroadcast()方法發(fā)送廣播消息時,如該BroadcastReceiver也對該消息“感興趣”(通過IntentFilter配置),BroadcastReceiver的onReceiver(Context context, Intent intent)方法將會被觸發(fā)。

開發(fā)者實現(xiàn)了自己的BroadcastReceiver之后,通常有兩種方式來注冊這個系統(tǒng)級的“事件監(jiān)聽器”。

  • 在Java代碼中通過Context.registReceiver()方法注冊BroadcastReceiver。
  • 在AndroidManifest.xml文件中使用

ContentProvider

對于Android應(yīng)用而言,它們必須相互獨立,各自運行在自己的Dalvik虛擬機(jī)實例中,如果這些Android應(yīng)用之間需要實現(xiàn)實時的數(shù)據(jù)交換。例如我們開發(fā)了一個發(fā)送短信的程序,當(dāng)發(fā)送短信時需要從聯(lián)系人管理應(yīng)用中讀取指定聯(lián)系人的數(shù)據(jù)——這就需要多個應(yīng)用程序之間進(jìn)行實時的數(shù)據(jù)交換。

Android系統(tǒng)為這種跨應(yīng)用的數(shù)據(jù)交換提供了一個標(biāo)準(zhǔn):ContentProvider。當(dāng)用戶實現(xiàn)自己的ContentProvider時,需要實現(xiàn)如下抽象方法。

  • insert(Uri, ContentValues):向ContentProvider插入數(shù)據(jù)。
  • delete(Uri, ContentValues):刪除ContentProvider中指定數(shù)據(jù)。
  • update(Uri, ContentValues, String, String[]):更新ContentProvider中指定數(shù)據(jù)。
  • query(Uri, String[], String, String[], String):從ContentProvider查詢數(shù)據(jù)。

通常與ContentProvider結(jié)合使用的是ContentResolver,一個應(yīng)用程序使用ContentProvider暴露自己的數(shù)據(jù),而另一個應(yīng)用程序則通過ContentResolver來訪問數(shù)據(jù)。

Intent和IntentFilter

嚴(yán)格地說,Intent并不是Android應(yīng)用的組件,但它對于Android應(yīng)用的作用非常大——它是Android應(yīng)用內(nèi)不同組件之間通信的載體。當(dāng)Android運行時需要連接不同的組件時,通常就需要借助于Intent來實現(xiàn)。Intent可以啟動應(yīng)用中另一個Activity,也可以啟動一個Service組件,還可以發(fā)送一條廣播消息來觸發(fā)系統(tǒng)中的BroadcastReceiver。也就是說,Activity、Service、BroadcastReceiver三種組件之間的通信都以Intent作為載體,只是不同組件使用Intent的機(jī)制略有區(qū)別而已。

  • 當(dāng)需要啟動一個Activity時,可調(diào)用Context的startActivity(Intent intent)方法,該方法的Intent參數(shù)封裝了需要啟動的目標(biāo)Activity的信息。
  • 當(dāng)需要啟動一個Service時,可調(diào)用Context的startService(Intent intent)方法或bindService(Intent service, ServiceConnection conn, int flags)方法,這兩個方法中的Intent參數(shù)封裝了需要啟動的目標(biāo)Service的信息。
  • 當(dāng)需要觸發(fā)一個BroadcastReceiver時,可調(diào)用Context的sendBroadcast(Intent intent)、sendStickyBroadcast(Intent intent)或sendOrderedBroadcast(Intent intent, String receiverPermission)方法來發(fā)送廣播消息,這三個方法中的Intent參數(shù)封裝了需要觸發(fā)的目標(biāo)Broadcas的信息。

當(dāng)一個組件通過Intent表示了啟動或者觸發(fā)另一個組件的“意圖”之后,這個意圖可分為兩類。

  • 顯式Intent:顯式Intent明確指定需要啟動或者觸發(fā)的組件的名稱。
  • 隱式Intent:隱式Intent只是指定需要啟動或者觸發(fā)的組件應(yīng)滿足怎樣的條件。

對于顯式Intent而言,Android系統(tǒng)無須對該Intent做任何解析,系統(tǒng)直接找到指定的目標(biāo)組件,啟動或觸發(fā)它即可。

對于隱式Intent而言,Android系統(tǒng)需要對該Intent進(jìn)行解析,解析出它的條件,然后再去系統(tǒng)中查找與之匹配的目標(biāo)條件。如果找到符合條件的組件,就啟動或觸發(fā)它們。

那么Android系統(tǒng)如何判斷被調(diào)用組件是否符合隱式Intent呢?這就需要靠IntentFilter來實現(xiàn)了,被調(diào)用組件可通過IntentFilter來聲明自己所滿足的條件——也就是聲明自己到底能處理哪些隱式Intent。

轉(zhuǎn)載于:https://www.cnblogs.com/zongzhankui/p/5875324.html

總結(jié)

以上是生活随笔為你收集整理的Android应用的基本组件介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。