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

正文內容

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

2024-10-14 16:01 本頁面
 

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