android 4大組件詳解

來源:互聯網
上載者:User

標籤:

android 4大組件是android的靈魂,每一個APP的開發必然離不開它們。

現在總的說一說他們的功能和用法:


1、Activity

應用程式中Activity就是一個螢幕的介面,你的眼睛看到的就是一個Activity。

          Activity的生命週期:這個是應用開發中比較重要的部分,瞭解activity在每個階段的生命週期對我們的開發是至關重要的;

首先啟動一個Activity1 onCreate->onStart->onResume

接著跳轉到Activity2    Activity1的生命週期變化:onPause->onStop

                                                 Activity2的生命週期變化:onCreate->onStart->onResume

回到Activity1    Activity2的生命週期變化 :onPause->onStop->onDestory

    Activity1的生命週期變化:onReStart->onStart->onResume

每次啟動Activity時OnCreate只會調用一次


2、Service

Service是不可見的,運行在背景,它是啟動並執行主線程的,所以在Service執行時間比較長的任務時必須使用非同步處理,不然會造成ANR。

Service的兩種開啟檔案:

1.在設定檔裡註冊:

<service android:name="MyService1">
            <intent-filter>
                <action android:name="XXXXXXXX"/>
            </intent-filter>
        </service>


2.啟動service

   啟動Service有兩種啟動方式:Context.StartService()    Context.bindService();

現在來說說這兩種啟動方式的區別:

(1)StartService 的啟動的生命週期是 onCreate->onStart->onStartCommand

onCreate在Service啟動時只會調用一次,以後每次啟動同樣的Service只會調用onStart,通過StartServce啟動的Service與調用者沒有關係,調用者關閉了,還會在後台運行,只有當調用ConText.StopService時才會停止銷毀 onStop->onDestory

(2)bindService啟動的生命週期是 onCreate->onBind

onCreate在Service啟動時只會調用一次,以後每次啟動同樣的Sevice只會調用onBind,通過bindSrivice啟動的Service在調用者關閉時,service也會跟著關閉。


3、BroadcastReceive(廣播接收者)

我對broadcasereceive的理解是broadcasereceive是接收外部訊息事件,然後根據程式的邏輯進行一些處理,如:來電、開機、Notification等等。broadcasereceive也是不可見的,但是可以啟動Activity和service.

監聽broadcasereceive的步驟:

1.首先寫個類繼承BroadCastReceiver,並實現裡面的onReceive方法,在這個方法裡用來判斷廣播的類型,從而進行相應的操作

2.註冊廣播接收者

(1)通過設定檔註冊:

<receiver android:name=".MyReceiver" >  <intent-filter>    <action android:name="android.provider.Telephony.SMS_RECEIVED" />  </intent-filter></receiver >
(2)在JAVA代碼裡註冊:

IntentFilter intentFilter=new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(myReceiver ,intentFilter);
注意:

1.廣播的生命週期一般只有10s左右,在廣播裡執行比較耗時的操作就會有可能造成ANR,如果需要完成一項比較耗時的工作 , 應該通過發送 Intent 給 Service, 由Service 來完成 . 這裡不能使用子線程來解決 , 因為 broadcastReceiver 的生命週期很短 , 子線程可能還沒有結束broadcastReceiver 就先結束,broadcastReceiver 一旦結束 , 此時 BroadcastReceiver 的所在進程很容易在系統需要記憶體時被優先殺死 , 因為它屬於空進程 . 如果它的宿主進程被殺死 , 那麼正在工作的子線程也會被殺死 . 所以採用子線程來解決是不可靠的

2.動態註冊廣播接收器還有一個特點,就是當用來註冊的Activity關掉後,廣播也就失效了。靜態註冊無需擔憂廣播接收器是否被關閉,只要裝置是開啟狀態,廣播接收器也是開啟著的。也就是說哪怕app本身未啟動,該app訂閱的廣播在觸發時也會對它起作用系統常見廣播Intent,如開機啟動、電池電量變化、時間改變等廣播


4、Content Provider內容提供者

ContentProvider(內容提供者)是Android中的四大組件之一。主要用於對外共用資料,也就是通過ContentProvider把應用中的資料共用給其他應用訪問,其他應用可以通過ContentProvider對指定應用中的資料進行操作。ContentProvider分為系統的和自訂的,系統的也就是例如連絡人,圖片等資料。


  1.android中對資料操作包含有:
  file, sqlite, Preferences, ContectResolver與ContentProvider前三種資料操作方式都只是針對本應用內資料,程式不能通過這三種方法去操作別的應用內的資料。android中提供ContectResolver與ContentProvider來操作別的應用程式的資料。

  2.使用方式:
  一個應用實現ContentProvider來提供內容給別的應用來操作,
  一個應用通過ContentResolver來操作別的應用資料,當然在自己的應用中也可以


android 4大組件詳解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.