Android四大组件之间的交互,Android四大组件每个组件的作用?它们都可以开启多进程吗?...
1、Android四大組件:Activity , Service, BroadCaseReceiver , ContentProvider
2、詳細介紹四大組件
(1)Activity :
作用:Android程序與用戶交互的窗口、一個Activity通常是一個單獨的屏幕,上面可以顯示不同的控件。
生命周期:onCreate---->onStart---->onResume---->onPause---->onStop---->onDestrop
是否可以開啟多進程:可以。在AndroidManifest中給Activity配置android:process屬性。
示例:
android:name=".ui.activity.NoticeOfficialActivity"android:process="com.shougang.shiftassistant1"android:screenOrientation="portrait"/>
上面圖一就是正常的activity,圖二就是多進程的形式。這意味著當前應(yīng)用進程是com.shougang.shiftassistant時,又新增了一個進程,進程名是com.shougang.shiftassistant1
(2)Service?服務(wù)
作用:一個長期運行在后臺,不與用戶產(chǎn)生UI交互的程序,可以用戶執(zhí)行網(wǎng)絡(luò)請求,播放音樂,執(zhí)行文件讀寫操作等。
啟動形式: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)發(fā)送消息
有序廣播:通過context.sendOrderedBroadCast(intent , receiverPermission)發(fā)送消息
異步廣播:通過context.sendStickyBroadcast(Intent myIntent)發(fā)送的
注意:生命周期只有十秒左右,如果在 onReceive() 內(nèi)做超過十秒內(nèi)的事情,就會報ANR(Application No Response) 程序無響應(yīng)的錯誤信息,如果需要完成一項比較耗時的工作 , 應(yīng)該通過發(fā)送 Intent 給 Service, 由Service 來完成 . 這里不能使用子線程來解決 , 因為 BroadcastReceiver 的生命周期很短 , 子線程可能還沒有結(jié)束BroadcastReceiver 就先結(jié)束了。
是否可以開啟多進程:可以。在AndroidManifest中給Activity配置android:process屬性
(4)ContentProvider??內(nèi)容提供者
作用:為應(yīng)用程序之間實現(xiàn)數(shù)據(jù)共享,實現(xiàn)統(tǒng)一接口。使用表的形式來對數(shù)據(jù)進行封裝。
方法:1、 public boolean? onCreate():該方法在ContentProvider 創(chuàng)建后就會被調(diào)用,Android開機后,ContentProvider在其它應(yīng)用第一次訪問它時才會被創(chuàng)建。
2、 public? int? insert():該方法用于宮外部應(yīng)用為ContentProvider中添加數(shù)據(jù)使用。
3、 public? int? delete(Uri? uri,? String? selection,? String[]? selectionArgs):該方法用于供外部應(yīng)用從ContentProvider中刪除數(shù)據(jù)。
4、 public? int update(Uri? uri,? ContentValues? values,? String? selection,? String[]selectionArgs):該方法用于供外部應(yīng)用更新ContentProvider中的數(shù)據(jù)。
5、 public? cursor query(Uri? uri,? String[]? projection,? String? selection,? String[]selectionArgs, String sortOrder):該方法用于供外部應(yīng)用查詢ContentProvider中的數(shù)據(jù)。
Uri詳解:外界可以通過ContentResolver接口來訪問ContentProvider(內(nèi)容提供者)中的數(shù)據(jù)。但是在詳細了解ContentResolver之前先理解Uri。Uri 通用資源標志符(Universal Resource Identifier)Uri代表要操作的數(shù)據(jù),Android中可用的每種資源 - 圖像、視頻片段等都可以用Uri來表示。
是否可以開啟多進程:可以。在AndroidManifest中給Activity配置android:process屬性
總結(jié)
以上是生活随笔為你收集整理的Android四大组件之间的交互,Android四大组件每个组件的作用?它们都可以开启多进程吗?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Web GIS多种方式发布动态地图服务及
- 下一篇: 模拟电路必看书推荐