Android四大組件

來源:互聯網
上載者:User

標籤:des   android   style   blog   http   io   color   ar   os   

1.Activity

package com.mao.hello;import android.app.Activity;import android.os.Bundle;public class HelloActivity extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }}
View Code
建立Activity步驟:1.建立一個Activity就是建立一個類,且該類要繼承Activity;2.需要複寫其中的onCreate()方法;3.建立的Activity要在資訊清單檔AndroidManifest.xml檔案中註冊;4.要為建立的Activity設定布局檔案如main.xml
View Code

2.Service

Service是一個後台啟動並執行,沒有介面的Android組件,可用於處理耗時操作。Service不是一個線程,有自己的生命週期。建立一個Service步驟:(1)建立一個類,繼承Service。(2)在AndroidManifest.xml檔案中配置<Serviec>(3)複寫相應的方法:abstract IBinder onBind():該方法是Service子類必須要實現的方法.void onCreate():當Service被建立時回調該方法.void onStartCommand():當Service被啟動時回調該方法.void onDestroy():當Service被關閉前回調該方法.boolean onUnbind():當Service上綁定的所有用戶端都中斷連線時回調該方法. 
View Code
 使用context.startService() 啟動Service是會會經曆:      context.startService() ->onCreate()- >onStart()->Service running      context.stopService() | ->onDestroy() ->Service stop      如果Service還沒有運行,則android先調用onCreate()然後調用onStart();如果Service已經運行,則只調用onStart(),所以一個Service的onStart方法可能會重複調用多次。      stopService的時候直接onDestroy,如果是調用者自己直接退出而沒有調用stopService的話,Service會一直在後台運行。該Service的調用者再啟動起來後可以通過stopService關閉Service。      所以調用startService的生命週期為:onCreate --> onStart(可多次調用) --> onDestroy使用使用context.bindService()啟動Service會經曆:      context.bindService()->onCreate()->onBind()->Service running      onUnbind() -> onDestroy() ->Service stop      onBind將返回給用戶端一個IBind介面執行個體,IBind允許用戶端回調服務的方法,比如得到Service啟動並執行狀態或其他動作。這個時候把調用者(Context,例如Activity)會和Service綁定在一起,Context退出了,Srevice就會調用onUnbind->onDestroy相應退出。      所以調用bindService的生命週期為:onCreate --> onBind(只一次,不可多次綁定) --> onUnbind --> onDestory。      在Service每一次的開啟關閉過程中,只有onStart可被多次調用(通過多次startService調用),其他onCreate,onBind,onUnbind,onDestory在一個生命週期中只能被調用一次。
View Code

3.BroadcastReciever

1.監聽廣播:Broadcast事件發生----系統自動建立對應的BroadcastReceiver執行個體[ 建立一個類,繼承BroadcastReceiver類]--[設定action匹配Intent]--自動觸發其onReceive()方法[重寫該方法]----onReceive()執行完成[10s],執行個體被銷毀.2.發送監聽廣播:(1)建立需要啟動BroadcastReceiver的Intent(2)調用Context的sendBroadcast()或sendOrderedBroadcast()方法(3)重寫BroadcastReceiver監聽的onReceive()方法[監聽](4)[1]在AndroidManifest.xml中註冊:(這種方式可實現後台全域監聽):<reveiver.../><intent-filter../>[2]代碼註冊:(不會在後台監聽)註冊:registerReceiver(receiver, filter);取消:unregisterReceiver(receiver);3.Android內建了許多系統廣播訊息Broadcast Actions[主要用這些內建的]<intent-filter>是過濾器,過濾匹配的Broadcast Intent.(Intent包括action和data)
View Code

4.ContentResolver

ContentProvider(內容提供者)是Android中的四大組件之一。主要用於對外共用資料,也就是通過ContentProvider把應用中的資料共用給其他應用訪問,其他應用可以通過ContentProvider對指定應用中的資料進行操作。ContentProvider分為系統的和自訂的,系統的也就是例如連絡人,圖片等資料。
View Code
1.ContentProvider  Android提供了一些主要資料類型的ContentProvider,比如音頻、視頻、圖片和私人通訊錄等。可在android.provider包下面找到一些Android提供的ContentProvider。通過獲得這些ContentProvider可以查詢它們包含的資料,當然前提是已獲得適當的讀取許可權。  主要方法:  public boolean onCreate() 在建立ContentProvider時調用      public Cursor query(Uri, String[], String, String[], String) 用於查詢指定Uri的ContentProvider,返回一個Cursor      public Uri insert(Uri, ContentValues) 用於添加資料到指定Uri的ContentProvider中      public int update(Uri, ContentValues, String, String[]) 用於更新指定Uri的ContentProvider中的資料      public int delete(Uri, String, String[]) 用於從指定Uri的ContentProvider中刪除資料      public String getType(Uri) 用於返回指定的Uri中的資料的MIME類型  *如果操作的資料屬於集合類型,那麼MIME類型字串應該以vnd.android.cursor.dir/開頭。  例如:要得到所有person記錄的Uri為content://contacts/person,那麼返回的MIME類型字串為"vnd.android.cursor.dir/person"。  *如果要操作的資料屬於非集合類型資料,那麼MIME類型字串應該以vnd.android.cursor.item/開頭。  例如:要得到id為10的person記錄的Uri為content://contacts/person/10,那麼返回的MIME類型字串應為"vnd.android.cursor.item/person"。
2.ContentResolver  當外部應用需要對ContentProvider中的資料進行添加、刪除、修改和查詢操作時,可以使用ContentResolver類來完成,要擷取ContentResolver對象,可以使用Context提供的getContentResolver()方法。      ContentResolver cr = getContentResolver();      ContentResolver提供的方法和ContentProvider提供的方法對應的有以下幾個方法。      public Uri insert(Uri uri, ContentValues values) 用於添加資料到指定Uri的ContentProvider中。      public int delete(Uri uri, String selection, String[] selectionArgs) 用於從指定Uri的ContentProvider中刪除資料。      public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) 用於更新指定Uri的ContentProvider中的資料。      public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) 用於查詢指定Uri的ContentProvider。
3.Uri  Uri指定了將要操作的ContentProvider,其實可以把一個Uri看作是一個網址,我們把Uri分為三部分。  第一部分是"content://"。可以看作是網址中的"http://"。  第二部分是主機名稱或authority,用於唯一標識這個ContentProvider,外部應用需要根據這個標識來找到它。可以看作是網址中的主機名稱,比如"blog.csdn.net"。  第三部分是路徑名,用來表示將要操作的資料。可以看作網址中細分的內容路徑。    

 

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.