<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## Android應用的四大基本組件簡介 Android應用通常由四部分組成,包括:Activity?? Service?? BroadcastReceiver?? ContentProvider;本篇博客將對這四個組件做基本介紹,讓大家對這些組件有一個大致的認識,后面的博客將還會對它們做詳細講解。 1. **Activity** Activity是android應用中負責與用戶進行交互的的組件,就是我們android手機呈現界面的組件,你可以把它想象成相框,我們android應用呈現的畫面都是在這個相框里面,而這個相框的大小就是我們手機屏幕的大小。他負責呈現畫面給我們用戶,并接受我們用戶的點擊 滑動等一系類響應事件。當我們把android應用要呈現的界面(XML文件)設計好后,然而activity只能通過setContentView(View) 來顯示指定的界面,好比,我們把照片拍好后,選擇用哪個相框來裝載這張照片,因此這樣 來為activity綁定顯示界面。 setContentView(View)的使用一般是下面的形式: ~~~ <span style="font-size:14px;">setContentView(R.layout.main);</span> ~~~ 其中的R.layout.main 是android資源文件中的一個布局文件,相當于是相片。 注意的是,實際上Actvity是Window的容器,Activity包含一個getWindow()方法,這個方法返回Activity所包含的窗口,對于Activity,作為開發者的我們是不用關心它的window對象,如果應用程序不用調用Activity的setContentView()方法來設置該activity的顯示界面,那么該應用將顯示一個空的窗口。 一個android應用包含很多個Activity,多個activity組成activity棧,存儲方式為先進后出,就像箱子里面放書一樣,先放進去的書放在最下面,最后放進去的在最上面,所以當前運行的activity位于棧頂。 還有一點就是我們Activity可以設計它自身的風格,就是主題,使用setTheme(int resouceId)就可以指定activity的使用風格,比如有些時候我們的activity不需要使用actionBar? 或者以對話框的形式顯示,就可以使用這個方法實現,也可以在AndroidManifest.xml指定activity的顯示風格。 2.**Service** **Service可以說**? 是和activity一樣重要的,它只是沒有顯示界面而已,service通常運行在后臺,因為沒有界面顯示,所以一般不需要與用戶進行交互。 Service組件需要繼承Service基類,Service運行之后擁有自己獨立的生命周期,Service組件通常是用于為其他組件提供后臺服務,或者監聽其他組件的運行狀態。其中典型的應用就是 音樂播放器,首頁是activity呈現給用戶的界面,后臺播放音樂有Service來完成,Service播放了多少秒然后通知Activity更新界面。Activity的播放暫停按鈕被用戶點擊了,然后通知Service停止或播放音樂。 3.? **BroadcastReceiver** **BroadcastReceiver 是 android 應用** 中一個非常重要的組件,根據這個名字,大家肯定知道了它其實就是廣播消息接收器,與普通的監聽器不同的是:普通的監聽器監聽的事件源氏程序中的對象,而BroadcastReceiver監聽的事件源是Android應用中的其他組件(activity? receiver)。 使用broadcastReceiver組件接受廣播消息比較簡單,我們只需要實現自己的BroadcatReceiver子類,并重寫onRecerver(Context context,Intent intent)方法即可。當其他組件通過sendBroadcast()? 或者sentStickyBroadcast() 或者sentOrderBroadcast()方法發送廣播消息時,如果該BroadcastReceiver對這個消息感興趣,通過IntentFilter配置(這是一個過濾器,設置一些條件,如果某個消息和這些條件匹配,則激活BroadcastReceiver),BroadcastReceiver的onReceive()方法就會被激活,這個方法中設置的一些動作就會被執行。就像Service中播放音樂播放完了之后,它就通過sendBroadcast()向activity發送消息,activity收到消息后,就會執行BroadcastReceiver中的onReceive()中的方法,activity就會在界面上做出相應的界面更新。 BroadcastReceiver有兩種注冊方式,只有注冊之后才能啟動,否則是不會有消息發送和接收的。如下兩種方法: ??????????? (1).? 在java代碼中通過Context.registReceiver()方法注冊BroadcastReceiver; ??????????? (2).??在AndroidManifest.xml中使用<receiver.../>元素完成注冊; ??????? 這里只對BroadcastReceiver做簡短介紹,后面的博客中將會對它進行詳細講解,并教會大家怎樣開發和使用它。 ????? 4.? **ContentProvider** 對于Android應用程序,它們是單獨運行在自己的Dalvik虛擬機實例中,如果這些Android應用之間需要進行實時的數據交換,則需要contentProvider來完成這個工作,當要獲取手機聯系人時,就會用到它; ContentProvider是Android系統為跨應用的數據交換的一個標準,當用戶實現自己的ContentProvider的時候,要實現它的以后4個方法: ????????? (1) insert(Uri, ContentValues):向ContentProvider插入數據; ??????????(2) delete(Uri, ContentValues):刪除contentProvider中指定的數據; ??????????(3) update(Uri,ContentValues,String,String[ ]):更新ContentProvider中指定的ContentProvider; ????????? (4) query(Uri, String[ ], String ,String[ ],String): 從ContentResolver查詢數據; ?? 通常使用ContentProvider時都會結合使用ContentResolver,一個應用程序來暴露自己的數據給外界,而另一個程序則通過ContentResolver來訪問數據; 5.**Intent 和 IntentFilter** **intent在android 應 用 程序** 中的地位非常之高,作用非常之大。它是Android應用程序內部不同組件之間通信的載體。當android運行時需要鏈接不同的組件時,就需要Intent來實現。Intent可以啟動一個Activity,也可以啟動一個Service,也可以通過發送廣播消息來觸發系統中的BroadcastReceiver。也就是說,intent是Activity,Service,BroadcastReceiver 這3個組件之間通信的載體,只是它們使用Intent的方式機制有些不同罷了。 ??????? (1)當需要啟動一個activity時,可調用Context的startActivity(Intent intent)或者 startActivityForResult(Intent intent,int requestCode)方法,這兩個方法中的intent都封裝了需要啟動的目標activity的信息; ????????(2)當需要啟動一個Service時,可調用Context的startService(Intent intent)或者bindService(Intent service, ServiceConnection conn,int flags)方法,這兩個方法中的intent都封裝了需要啟動的目標service的信息; ??????? (3)當需要觸發一個BroadcastReceiver時,可調用Context的sendBroadcast(Intent intent)?或 sendStickyBroadcast(Intent intent) 或 sendOrderBroadcast(Intent intent,String receiverPermission) 方法來發送廣播消息,這三個方法中的intent封裝了需要觸發的目標BroadcastReceiver 的信息; 通過上面的介紹,可以看出,Intent封裝了當前組件需要啟動或觸發的目標的信息,然而Intent分為兩類: ?????????(1)? 顯示 Intent :顯示Intent明確指定需要啟動或者觸發的組件的類名; ?????????(2)? 隱示 Intent:隱示Intent只是指定了需要啟動啟動或者觸發的組件需要應滿足怎樣的條件; ?????????? 對于顯示Intent,Android系統無需對該Intent做任何解析,系統直接找到指定的目標組件,啟動會觸發它即可; ???????????對于隱示Intent,Android系統需要對該Intent進行解析,解析出它的條件,然后去系統中查找與之匹配的目標組件。如果有滿足條件的組件就啟動或觸發它。 ??????????隱示Intent通過IntentFilter來實現的,被調用組件可以通過IntentFilter來聲明自己所滿足的條件,就是聲明自己到底能處理哪些Intent。Intent和IntentFilter有很多內容,后面的博客會做詳細介紹。本次博客就介紹這么多。 ??????????? ?????????????????
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看