成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

聊聊Service(一)

移動開發 Android
ervice作為Android中四大組件之一,擁有重要的地位。Service具有和Activity一樣的級別,只是沒有界面,是運行于后臺的服務。這個運行“后臺”是指不可見,不是指在后臺線程中,事實上四大組件都是運行在UI線程中,都不能在各自的生命周期方法中執行耗時操作或者網絡請求。Service的應用場景還是比較多的,比如說在后臺播放音樂、實時去更新當前地理位置的變化、新聞APP后臺去離線緩存內容、進程間通信等。

Service作為Android中四大組件之一,擁有重要的地位。Service具有和Activity一樣的級別,只是沒有界面,是運行于后臺的服務。這個運行“后臺”是指不可見,不是指在后臺線程中,事實上四大組件都是運行在UI線程中,都不能在各自的生命周期方法中執行耗時操作或者網絡請求。Service的應用場景還是比較多的,比如說在后臺播放音樂、實時去更新當前地理位置的變化、新聞APP后臺去離線緩存內容、進程間通信等。

Service主要可以分為兩類:Local Service、Remote Service。比較常用的還是本地服務,應用于程序內部。可以通過Context.startService()啟動Service,通過Context.stopService()結束服務。同時也可以Context.bindService()來綁定一個service服務自己,也可以通過Context.unbindService()解綁。無論調用多少次startService,只需一句stopService就終結服務了。

Remote Service 用于android系統內部的應用程序之間。可以定義接口并把接口暴露出來,以便其他應用進行操作。客戶端建立到服務對象的連接,并通過那個連接來調用服務。調用Context.bindService()方法建立連接,并啟動,以調用 Context.unbindService()關閉連接。多個客戶端可以綁定至同一個服務。如果服務此時還沒有加載,bindService()會先加載它。

啟動Service的方式有兩種,那對應著的是Service的兩種生命周期。看下Google官方的配圖,簡單直白明了,我就不再贅述了。

 

由于start和stop的方式來控制服務的方式比較簡單,在此也就不多贅述了。只是還需提醒在這種方式下,Activity與Service的通信就顯 得不那么直白簡單了,因為我們拿不到Service的引用。如果你通過單例的形式去拿到Service的引用,進而獲取其中的方法和屬性也未嘗不可,但是 入侵性比較嚴重,在此不推薦大家使用這種辦法。比較好的實現Activity和Service之間通信的是另一個重要的組件 BroadCastReceiver,下面的實例中會用到。

實戰使用的是一個簡單的音樂播放器。當然了,使用的是bind和unbind的方式。bind即綁定服務,unbind即解綁服務,也進而調用了 Service的onDestroy方法銷毀。bind可以直接拿到Service的引用,能直接操控service。bind可以用在當前應用中的業務 處理,也可以通過AIDL實現進程間通信。本文先介紹第一種。簡單介紹下這個Demo實現的功能,它會播放手機SD卡上的一首歌曲,你可以對其開始和暫停 操作,界面會展示歌曲的時長以及歌曲播放的實時位置。兩者的交互的實現方式:1、類引用的直接調用   2、廣播機制,Service發,Activity接收。

一、在MusicService中新建內部類MyBinder,其中有個公有方法返回Service的實例

 

二、通過MusicService中的onBind方法返回MyBinder的實例,供Activity綁定成功后的回調

 

三、和Activity一樣,需要在manifest中注冊

 

四、Activity中綁定,獲得回調的Binder,進而得到MusicService實例

 

五、拿到了MusicService的引用了,終于可以操作service去播放暫停音樂了

 

六、在Activity的onDestroy方法中,記得對Service進行解綁。不然會和注冊的BroadCastReceiver一樣,會造成內存泄漏

 

代碼地址:https://github.com/JackCho/ServiceDemo1

本文鏈接:http://my.oschina.net/u/1171391/blog/292672

責任編輯:chenqingxiang 來源: oschina
相關推薦

2014-07-31 10:57:15

Android組件Service

2023-12-06 08:26:19

Service數據庫

2021-12-10 18:19:14

授權 Linkerd策略

2020-05-06 22:07:53

UbuntuLinux操作系統

2021-06-21 14:52:45

磁盤機械磁盤固態磁盤

2021-02-04 15:08:37

Vue漸進式框架

2024-02-20 21:34:16

循環GolangGo

2021-08-27 07:06:10

IOJava抽象

2023-07-31 07:48:43

Java內存虛擬機

2022-12-07 09:01:14

布局容器VStack?

2021-06-08 06:13:16

React開發開發技術

2023-08-10 08:28:46

網絡編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發模式

2023-09-21 08:05:49

Mybatis插件開發

2023-09-10 21:42:31

2023-09-21 08:16:56

JDK 21向量計算計算

2022-05-24 08:21:16

數據安全API

2020-11-25 07:43:07

Java

2021-11-05 07:59:25

HashMapJava知識總結
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 你懂的免费在线 | 亚洲香蕉 | 夜夜艹 | 波多野结衣电影一区 | 亚洲成av人片在线观看 | 天堂精品 | 激情毛片 | 91精品国产91久久久久久吃药 | 国产成人精品午夜视频免费 | 亚洲午夜精品一区二区三区他趣 | 福利av在线 | 中文字幕99| 久久美国 | a级片播放| 国产美女一区二区 | 亚洲精品电影在线观看 | 国产精品久久久久久久久久久久 | 午夜电影网站 | 精品一二三区视频 | 国产不卡视频在线 | 久久精品成人 | 成人av在线播放 | 国产欧美日韩精品一区 | 日韩一区二区av | 亚洲成人三区 | 一级片aaa | 特黄特黄a级毛片免费专区 av网站免费在线观看 | 亚洲欧洲在线观看视频 | 日韩人体在线 | 国产精品久久久久不卡 | 久久综合99 | 亚洲视频免费在线观看 | 91精品久久久久久久久久 | 青青草久久 | 欧美区日韩区 | 亚洲精品国产一区 | 做a网站 | 羞羞视频在线网站观看 | 日本久久一区二区三区 | 国产精品一二三区 | 成年人的视频免费观看 |