Android四大組件每一個組件的做用?它們均可以開啓多進程嗎?

一、Android四大組件:Activity , Service, BroadCaseReceiver , ContentProviderandroid

二、詳細介紹四大組件網絡

(1)Activity :異步

 做用:Android程序與用戶交互的窗口、一個Activity一般是一個單獨的屏幕,上面能夠顯示不一樣的控件。ide

生命週期:onCreate---->onStart---->onResume---->onPause---->onStop---->onDestropui

是否能夠開啓多進程:能夠。在AndroidManifest中給Activity配置android:process屬性。spa

示例:線程

<activity
    android:name=".ui.activity.ChatSettingActivity"
    android:screenOrientation="portrait" />
<activity
    android:name=".ui.activity.NoticeOfficialActivity"
    android:process="com.shougang.shiftassistant1"
    android:screenOrientation="portrait" />
<activity

上面圖一就是正常的activity,圖二就是多進程的形式。這意味着當前應用進程是com.shougang.shiftassistant時,又新增了一個進程,進程名是com.shougang.shiftassistant1視頻

(2)Service 服務接口

做用:一個長期運行在後臺,不與用戶產生UI交互的程序,能夠用戶執行網絡請求,播放音樂,執行文件讀寫操做等。生命週期

啓動形式:startService(一直運行在後臺,即便啓動service的組件已被銷燬)

                bindService(有組件與其綁定時纔會運行)

生命週期:startService: onCreate----->onStartCommand----->onStop-------->onDestrop

                 bindService: onCreate----->onBind----->onUnbind------->onDestroy

是否能夠開啓多進程:能夠。在AndroidManifest中給Activity配置android:process屬性

(3)BroadCaseReceiver  廣播接收者

做用:沒有用戶界面,它能夠啓動一個activity或service來啓動它們收到的消息

廣播類型:普通廣播: 經過context.sendBroadCast(Intent  intent)發送消息

                 有序廣播:經過context.sendOrderedBroadCast(intent , receiverPermission)發送消息

                 異步廣播:經過context.sendStickyBroadcast(Intent myIntent)發送的

注意:生命週期只有十秒左右,若是在 onReceive() 內作超過十秒內的事情,就會報ANR(Application No Response) 程序無響應的錯誤信息,若是須要完成一項比較耗時的工做 , 應該經過發送 Intent 給 Service, 由Service 來完成 . 這裏不能使用子線程來解決 , 由於 BroadcastReceiver 的生命週期很短 , 子線程可能尚未結束BroadcastReceiver 就先結束了。

是否能夠開啓多進程:能夠。在AndroidManifest中給Activity配置android:process屬性

(4)ContentProvider  內容提供者

做用:爲應用程序之間實現數據共享,實現統一接口。使用表的形式來對數據進行封裝。

方法:一、 public boolean  onCreate():該方法在ContentProvider 建立後就會被調用,Android開機後,ContentProvider在其它應用第一次訪問它時纔會被建立。 
二、 public  int  insert():該方法用於宮外部應用爲ContentProvider中添加數據使用。 
三、 public  int  delete(Uri  uri,  String  selection,  String[]  selectionArgs):該方法用於供外部應用從ContentProvider中刪除數據。 
四、 public  int update(Uri  uri,  ContentValues  values,  String  selection,  String[]selectionArgs):該方法用於供外部應用更新ContentProvider中的數據。 
五、 public  cursor query(Uri  uri,  String[]  projection,  String  selection,  String[]selectionArgs, String sortOrder):該方法用於供外部應用查詢ContentProvider中的數據。 

Uri詳解:外界能夠經過ContentResolver接口來訪問ContentProvider(內容提供者)中的數據。可是在詳細瞭解ContentResolver以前先理解Uri。Uri 通用資源標誌符(Universal Resource Identifier)Uri表明要操做的數據,Android中可用的每種資源 - 圖像、視頻片斷等均可以用Uri來表示。

是否能夠開啓多進程:能夠。在AndroidManifest中給Activity配置android:process屬性

相關文章
相關標籤/搜索