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