一、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屬性