android 中的Service

來源:互聯網
上載者:User

標籤:android   service   資料   二進位   執行個體   

Service用處
耗時比較長的功能操作放在後台。(下載,MP3播放)Service是一個應用程式組件Service沒有圖形化介面可以使用Service來更新ContentProvider,發送Intent以及啟動系統的通知等等。Service不是一個單獨的進程,Service不是一個線程。 Service的生命週期onCreat():當Service第一次被建立時,由系統調用。onStartConmmand():是從Android2.0以後的版本開始使用,Service啟動時會由系統自動調用。onDestroy():當Service不再使用時由系統調用。 onStartCommand Service的進程優先順序Service擁有較高的進程,一般在以下幾種情況下都不會被kill掉。1、如果Service正在調用onCreate、onStart或onDestroy方法,那麼用於當前Service的進程則變為前台進程以避免被killed。2、如果Service已經被啟動,擁有它的進程僅次於可見的進程,而比不可見的進程重要,這就意味著Service一般不會被killed。3、如果用戶端已經串連到Service,那麼擁有它的進程則擁有最高的優先順序,可以認為該Service是可見的,不會被killed。4、如果Service可以使用startForeground(int,Notification)方法來將Service設定為前台狀態,那麼系統就認為是對使用者可見的,並不會在記憶體不足時將它killed。

一、onStartCommand有4種返回值:

START_STICKY:如果service進程被kill掉,保留service的狀態為開始狀態,但不保留遞送的intent對象。隨後系統會嘗試重新建立service,由於服務狀態為開始狀態,所以建立服務後一定會調用onStartCommand(Intent,int,int)方法。如果在此期間沒有任何啟動命令被傳遞到service,那麼參數Intent將為null。

START_NOT_STICKY:“非粘性的”。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統不會自動重啟該服務。

START_REDELIVER_INTENT:重傳Intent。使用這個返回值時,如果在執行完onStartCommand後,服務被異常kill掉,系統會自動重啟該服務,並將Intent的值傳入。

START_STICKY_COMPATIBILITY:START_STICKY的相容版本,但不保證服務被kill後一定能重啟。

在Activity中綁定Service,讓Activity能夠提供相關資訊的流程

Service類建立

1、繼承Service

2、複寫onBind方法,返回一個綁定的介面給Service。

3、聲明一個內部類來繼承Binder

4、在onBind中將繼承Binder的類給執行個體化。再講對象給返回。

在Manifest中註冊:service

Activity中

綁定按鈕

在OnClick方法中:

執行個體化Intent對象

通過Intent對象引用來設定頁面跳轉:intent.setClass(Context.this,class);

Service與Activity綁定:bindService(intent,conn,flags)

用匿名內部類聲明一個ServiceConnection對象。裡面有onServiceConnected和onServiceDisconnected

Activity與service的綁定,主要通過Binder對象來完成。serivic建立一個Binder,在Activity中獲得binder,就能拿到binder中的方法。

Parcel對象

序列化:將對象轉化成二進位的資料存起來。

Transact與onTransact

如果想要調用onTransact(int code,Parcel data,Parcel reply,int flags),就得先調用Transact(int code,Parcel data,Parcel reply,int flags)。

code:是一個在FIRST_CALL_TRANSACTION和LAST_CALL_TRANSACTION之間的整數。

data:發往service的資料。

reply:返回給Activity的資料。

flags:通常寫成0.

android 中的Service

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.