Android學習筆記—第二章 Android四大組件

來源:互聯網
上載者:User

標籤:android   activity   四大組件   service   broadcastreceiver   contentprovider   

第二章 Android四大組件

  1. Activity(使用中視窗):

    Android程式中最基本的模組,為使用者操作而展示的可視化使用者介面。一個Android應用程式可以只有一個Activity,也可以包含多個Activity,數量及每個Activity的作用取決於應用程式及其設計。

    (1)Activity的生命週期

    建立→運行   onCreate   onStart   onResume

    運行→銷毀   onPause    onStop    onDestory

    運行→停止(不可見  不可操作)  onPause   onStop

    停止→恢複   onRestart  onStart  onResume

    運行→暫停(可見  不可操作) onPause

    暫停→恢複 onResume

    備忘:當Activity處於暫停或停止狀態的時候,如果有更高優先順序的應用需要記憶體時,該Activity所在應用可能被銷毀。

    (2)應用舉例:資料持久化

    存:onPause  onStop  onDestory

    取:onCreate  onStart  onResume

  2. Service(服務):沒有介面,運行在後台

    (1)Service的建立:

    a. 建立一個類繼承Service

    b. 重寫onbind()方法

    c. 資訊清單檔中註冊  android:name="包名.類名"

    (2)啟動服務

    Intent serviceIntent = new Intent(this,MyService.class);

    startService(serviceIntent);

    備忘:第一次啟動,會觸發Service的onCreate和onStartCommand方法;如果服務已經存在,則多次點擊啟動服務,只會調用onStartCommand方法。

    (3)停止服務

    stopService(serviceIntent);

    (4)綁定服務

    bindService(serviceIntent,xxx,xxx);

    a. serviceIntent:表示一個Intent對象;

    b. 第二個參數:表示一個ServiceConnection對象,例如:

    ServiceConnection conn =new ServiceConnection;

    c. 第三個參數:Context.BIND_AUTO_CREATE 表示如果服務不存在,會自動建立一個服務。

     (5)解除綁定服務

    unbindService(conn);

    (5)通過綁定調用Service中的方法

    a. 建立一個類MyBinder繼承Binder

    b. 在該類中添加所需要調用的Service中的方法

    c. 在onBinder()方法中,返回一個MyBinder類型的對象

    d. 在Activity的onServiceConnected()方法中,得到IBinder類型對象

    e. 將IBinder類型對象強轉為MyBinder類型

  3. BroadcastReceiver(廣播接收器)

    (1)廣播:單項、群發,作為Android內部資訊傳輸的機制。

    (2)廣播接收器的建立:

    a. 建立一個類MyReceiver繼承BroadcastReceiver;

    b. 重寫onReceive()方法;

    c. 資訊清單檔中註冊

    android:name="包名.類名"

    (3)應用自己發送廣播

    //建立Intent對象

    Intent intent = new Intent();

    //設定過濾條件

    intent.setAction("xxx");

    //發送廣播

    sendBroadcast(intent);

    (4)接收廣播

    a. 在資訊清單檔中註冊廣播

    <intent-filter>

        <action android:name="xxx"/>

    </intent-filter>

    只要條件匹配,就能接收廣播

    b. 在代碼中註冊廣播

    //建立IntentFilter對象

    IntentFilter filter = new IntentFilter();

    //添加過濾條件

    filter.addAction("xxx");

    //建立MyReceiver對象

    MyReceiver receiver = new MyReceiver();

    //註冊廣播

    registerReceiver(filter,receiver);

    //登出廣播

    unregisterReceiver(receiver);

  4. ContentProvider(資料共用)

    一個用來提供資料共用的組件,主要將一些特定的應用程式資料提供給其他應用程式使用,這些應用程式資料可以儲存於檔案系統或者SQLite資料庫中。在Android程式中,共用資料的實現需要繼承自ContentProvider基類,該基類為其他應用程式使用和儲存資料實現了一套標準方法。然而,應用程式並不直接調用這些方法,而是使用一個ContentResolver對象,並通過調用它的方法作為替代。ContentResolver對象提供了query、insert及update等方法,可以對共用資料執行各種操作。

    (1)ContentResolver(內容解析者)樣本:讀取系統連絡人

    //建立ContentResolver對象

    ContentResolver resolver = getContentResolver();

    //使用query方法擷取連絡人資訊

    Cusor cusor = resolver.query(Phones.CONTENT_URI, null, null, null, null);

    //遍曆連絡人資訊

    while(cursor.moveToNext()){

    //根據欄位名擷取該欄位的索引位置

    int nameIndex = cursor.getColumnIndex(Phones.NAME);

    int numberIndex = cursor.getColumnIndex(Phones.NUMBER);

    //根據索引擷取連絡人資訊

    String name = cursor.getString(nameIndex);

    String number = cursor.getString(numberIndex);

    }

    //關閉cursor對象

    cursor.close();

Android學習筆記—第二章 Android四大組件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.