freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

第5章android服務(wù)service(已修改)

2025-10-09 16:01 本頁面
 

【正文】 第 5章 Android服務(wù) (Service) 網(wǎng)絡(luò)資源: : 489059718(Android編程 清華版 ) 287966120(公共版) 號(hào): 1281147324 主要內(nèi)容 S e r v i c e 詳 解跨 進(jìn) 程 調(diào) 用S e r v i c eS e r v i c e 簡(jiǎn) 介調(diào) 用 系 統(tǒng) 服 務(wù)什 么 是 A I D L 服 務(wù)建 立 A I D L 文 件建 立 A I D L 服 務(wù) 端建 立 A I D L 客 戶 端S e r v i c e啟 動(dòng) S e r v i c eS e r v i c e 方 法 介 紹綁 定 S e r v i c e 過 程S e r v i c e 生 命 周 期 Service概述 文本 Service介紹 Service是 android 系統(tǒng)中的一種組件,它跟 Activity的級(jí)別差不多,它們都是從 Context派生出來的,但是它不能自己運(yùn)行,只能在后臺(tái)運(yùn)行,并且可以和其它組件進(jìn)行交互。 它需要通過某一個(gè) Activity或者其他Context對(duì)象來調(diào)用 。 啟動(dòng) Service的兩種方式 在 Android系統(tǒng)中,常采用以下兩種方式啟動(dòng) Service. (1)通過 Context的 startService( ) 啟動(dòng) service后 , 訪問者與 service之間沒有關(guān)聯(lián) , 該 service將一直在后臺(tái)執(zhí)行 , 即使調(diào)用 startservice的進(jìn)程結(jié)束了 , service仍然還存在 , 直到有進(jìn)程調(diào)用 stopSer v ice( ) , 或者 s erv ice自己停止( stopSelf) 。 這種情況下 , service與訪問者之間無法進(jìn)行通信 , 數(shù)據(jù)交換 , 往往用于執(zhí)行單一操作 , 并且沒有返回結(jié)果 。 例如通過網(wǎng)絡(luò)上傳 , 下載文件 , 操作一旦完成 , 服務(wù)應(yīng)該自動(dòng)銷毀 。 (2)通過 Context的 bindService( ) 綁定 Service, 綁定后 Service就和調(diào)用bindService的組件同生共死了 。 也就是說當(dāng)調(diào)用 bindService( ) 的組件銷毀了 ,那么它綁定的 Service也要跟著被結(jié)束 , 當(dāng)然期間也可以調(diào)用 unbindservice()讓Service提前結(jié)束 。 注意: 一個(gè)服務(wù)可以與多個(gè)組件綁定,只有當(dāng)所有的組件都與之解綁后,該服務(wù)才會(huì)被銷毀。 啟動(dòng) Service的兩種方式 以上兩種方法可以混合使用,即一個(gè) Service既可以啟動(dòng)也可以綁定,只需要同時(shí)實(shí)現(xiàn) onStartedCommand()(用于啟動(dòng) )和 onBind()(用于綁定 )方法,那么只有調(diào)用 stopService(),并且調(diào)用 unbindService()方法后,該 Service才會(huì)被銷毀。 注意 : 服務(wù)運(yùn)行在它所在進(jìn)程的主線程,服務(wù)并沒有創(chuàng)建它自己的線程,也沒有運(yùn)行在一個(gè)獨(dú)立的進(jìn)程上(單獨(dú)指定的除外),這意味著,如果你的服務(wù)做一些消耗 CPU或者阻塞的操作,你應(yīng)該在服務(wù)中創(chuàng)建一個(gè)新的線程去處理。通過使用獨(dú)立的線程,你就會(huì)降低程序出現(xiàn) ANR( Application No Response程序沒有響應(yīng))的風(fēng)險(xiǎn),程序的主線程仍然可以保持與用戶的交互。 Service中常用方法 與開發(fā)其它 Android組件類似,開發(fā) Service組件需要先開發(fā)一個(gè) Service子類 ,該類需繼承系統(tǒng)提供的 Service類,系統(tǒng)中 Service類包含的方法主要有: ? abstract IBinder onBind(Intent intent): 該方法是一個(gè)抽象方法,所有 Service子類必須實(shí)現(xiàn)該方法。該方法將返回一個(gè) IBinder對(duì)象,應(yīng)用程序可通過該對(duì)象與 Service組件通信 ; ? void onCreate(): 當(dāng) Service第一次被 創(chuàng)建 時(shí),將立即回調(diào)該方法; ? void onDestroy(): 當(dāng) Service被 關(guān)閉 之前,將回調(diào)該方法; ? void onStartCommand(Intent intent,int flags,int startId): 每次客戶端調(diào)用 startService(Intent intent)方法 啟動(dòng) 該 Service時(shí)都會(huì)回調(diào) onStartCommand()方法; ? boolean onUnbind(Intent intent): 當(dāng)該 Service上綁定的所有客戶端都斷開連接時(shí)將會(huì)回調(diào)該方法。 ?開發(fā) Service組件需要先開發(fā)一個(gè) Service子類 ,然后在 配置該 Service,配置時(shí)可通過intentfilter…/ 元素指定它可被哪些 Intent啟動(dòng)。 ?在 Service: service android:name=“.MyService” intentfilter action android:name=“”/ /intentfilter /service Action中的值一定要與程序中創(chuàng)建的 Intent的 Action的值一致 ,程序就是根據(jù) Action的值來查找 相應(yīng)的Service從而啟動(dòng)它。 Service中常用方法 ?通過 Context的 startService()啟動(dòng) Service后,訪問者與Service之間沒有關(guān)聯(lián),該 Service將一直在后臺(tái)執(zhí)行 ,即使調(diào)用 startService()的進(jìn)程結(jié)束了, Service仍然還存在,直到有進(jìn)程調(diào)用 stopService(),或者 Service自己自殺( stopSelf())。這種情況下, Service與訪問者之間無法進(jìn)行通信、數(shù)據(jù)交換 。 ?通過 Context的 bindService()綁定 Service后, Service就和 調(diào)用 bindService()的組件 同生共死 了,也就是說當(dāng)調(diào)用 bindService()的組件銷毀了,那么它綁定的 Service也要跟著被結(jié)束。 Service中常用方法簡(jiǎn)介 案例 :FirstService 定義的 Service子類必須實(shí)現(xiàn) onBind()方法 , 然后還需在 文件中對(duì)該 Service子類進(jìn)行配置 , 配置時(shí)可通過 intentfilter...元素指定它可被哪些 Intent啟動(dòng) 。 下面具體來創(chuàng)建一個(gè) Service子類并對(duì)它進(jìn)行配置 , 代碼如下 。 程序清單: /FirstService/src/iet/jxufe//android/ public class MyService extends Service { private static final String TAG = MyService。 public IBinder onBind(Intent arg0) { (TAG, MyService onBind invoked!)。 return myBinder。 } public void onCreate() { (TAG, MyService onCreate invoked!)。 ()。 } public void onDestroy() { (TAG, MyService onDestroy invoked!)。 ()。 quit=true。 } public int onStartCommand(Intent intent, int flags, int startId) { (TAG, MyService onStartCommand invoked!)。 return (intent, flags, startId)。 } → 自定義服務(wù)類 → 重寫 OnBind方法 → 重寫 OnCreate方法 → 重寫 OnDestory方法 → 重寫 OnStartCommand方法 案例 :FirstService 在上述代碼中,創(chuàng)建了自定義的 MyService類, 該類繼承了 ,并重寫了 onBind(),onCreate(),onStartCommand(),onDestory等方法 ,在每個(gè)方法中, 通過 LOG語句測(cè)試和查看該方法是否被調(diào)用 。 定義完 Service之后,還需在項(xiàng)目的 該 Service,增加配置片段如下。 service android:name=.MyService intentfilter action android:name=/ /intentfilter /service 雖然目前 MyService已經(jīng)創(chuàng)建并注冊(cè)了 , 但系統(tǒng)仍然不會(huì)啟動(dòng) MyService, 要想啟動(dòng)這個(gè)服務(wù) 。 必須顯示地調(diào)用 startService()方法 。 如果想停止服務(wù) , 需要顯示地調(diào)用 stopService()方法 , 下面代碼中 , 使用 Activity作為 Service的啟動(dòng)者 ,分別定義了啟動(dòng) Service和關(guān)閉 Service兩個(gè)按鈕 , 并為它們添加了事件處理 。 程序清單: /FirstService/src/iet/jxufe//android/ public class MainActivity extends Activity { public void onCreate(Bundle savedInstanc
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1