當前位置:首頁 » 安卓系統 » androidservice使用

androidservice使用

發布時間: 2024-10-07 12:00:01

❶ android編程如何讓程序後台運行

通過android的四大組件之一的service來實現後台運行,類似Windows上的服務。

1、Android上的service有兩種啟動方式(或者說兩種方法實現service)

①startService()和bindService() ,有區別。

2、簡單的使用Service步驟(startService()):

①建立service的子類,重寫onStartCommand()。(當服務啟動的時候會調用該方法)

java">{

@Override
publicvoidonCreate(){
}

//這個函數在低版本中使用的是onStart(),onStart()在高版本中已經過時了。
@Override
publicintonStartCommand(Intentintent,intflags,intstartId){
}

@Override
publicvoidonDestroy(){
}
}

②在清單文件中聲明Service組件

<application>
<serviceandroid:name="HelloService">
<intent-fiter>
<actionandroid:name="xxxxx">
</intent-fiter>
</service>
</application>

③在Activity等調用startService(intent);啟動你的Service

Intentintent=newIntent("xxxxx");
//還可以使用Intentintent=newIntent(activity.this,HelloService.class);
startService(intent);

註:兩種方法各有不同,具體請看官方API:

http://developer.android.com/guide/components/services.html

❷ Android 之 Service(一)啟動,綁定服務

Service(服務)一個運行在後台執行長時間運行的操作組件,它不提供任何用戶界面,作為與Activity同級的組件,它依舊是運行在主線程中。
其它組件可以啟動一個Service,當這個Service啟動之後便會在後台執行,這里需要注意,由於是在主線程中,所以我們需要另外開啟一個線程來執行我們的耗時操作。
此外,一個組件還可以與一個Service進行綁定來實現組件之間的交互,甚至可以執行IPC(Inter-Process Communication)進程間通信。
Service可以在後台執行很多任務,比如處理網路事務,播放音樂,文件讀寫或者與一個內容提供者交互,等等。

本地服務(Local)
該服務依附在主進程上而不是獨立的進程,這樣在一定程度上節約了資源,另外本地服務因為是在同一進程因此不需要IPC,也不需要AIDL。相應bindService會方便很多,當主進程被Kill後,服務便會終止。一般使用在音樂播放器播放等不需要常駐的服務。

遠程服務(Remote Service)
該服務是獨立的進程,對應進程名格式為所在包名加上你指定的android:process字元串。一般定義方式 android:process=":service" 由於是獨立的進程,因此在Activity所在進程被Kill的時候,該服務依然在運行,不受其他進程影響,有利於為多個進程提供服務具有較高的靈活性。由於是獨立的進程,會佔用一定資源,並且使用AIDL進行IPC比較麻煩。一般用於系統的Service,這種Service是常駐的。

startService啟動的服務
用於啟動一個服務執行後台任務,不與組件進行通信,停止服務使用stopService。 當一個應用組件比如activity通過調用startService()來啟動一個服務的時候,服務便處於啟動狀態。一旦啟動,服務可以在後台無限期地運行下去,即使當啟動它的組件已經銷毀。通常情況下,一個啟動的service執行一個單一的操作並且不會返回任何結果給調用者。

bindService啟動的服務
用於啟動的服務需要進行通信。停止服務使用unbindService。 當一個應用組件通過調用bindService()來與一個服務綁定時,服務便處於綁定狀態。一個綁定的服務提供了一個客戶端-伺服器端介面來允許組件與服務進行交互,發送請求,得到結果甚至通過IPC進程間通信來完成操作。只有當其它組件與服務進行綁定時,服務才會處於綁定狀態。多個組件可以同時與服務綁定,但是當他們全部都解除綁定時,服務就會銷毀。

2.BindService:
如果一個Service在某個Activity中被調用bindService方法啟動,不論bindService被調用幾次,Service的 onCreate 方法只會執行一次,同時 onStartCommand 方法始終不會調用。當建立連接後,Service會一直運行,除非調用unbindService來接觸綁定、斷開連接或調用該Service的Context不存在了(如Activity被Finish——即通過bindService啟動的Service的生命周期依附於啟動它的Context),系統在這時會自動停止該Service。

3.StartService AND BindService:
當一個Service在被啟動(startService 的同時又被綁定(bindService ),該Service將會一直在後台運行,並且不管調用幾次, onCreate 方法始終只會調用一次, onStartCommand 的調用次數與startService 調用的次數一致(使用bindService 方法不會調用 onStartCommand )。同時,調用unBindService 將不會停止Service,必須調用stopService 或Service自身的stopSelf 來停止服務。

4.停止Service:
當一個服務被終止(stopService 、stopSelf 、unbindService )時, onDestory 方法將會被調用——所以我們需要在該方法中清除一些工作(依附該Service生命周期上的,比如:停止在Service中創建並運行的線程)。

1.創建服務

如果你才用的是 startService的方式那麼 onBind方法可以忽略
2.注冊服務

3.開啟服務
start:

bind

綁定服務,一般涉及到組件或進程之間的通信,既然需要通信,那麼我們肯定需要一個連接,這里ServiceConnection就是我們所需要的連接,通過Ibinder的傳遞,我們可以獲取到Service的Ibinder對象,從而進行相關操作。

關於粘性服務,這里需要提到 Service的onStartCommand返回值

andorid:name

adroid:exported

android:enabled

android:label

android:process

android:icon

android:permission

關於服務,當我們在應用開發中,如果需要長時間的在後台運行,獨立完成某一些事情的情況下,請使用Service!

此文綜合: http://www.jianshu.com/p/1e49e93c3ec8 以及自己的一些問題看法,用作學習,回顧之用。

Service 前台服務
請參看 紫豪 http://www.jianshu.com/p/5505390503fa

熱點內容
java字元串byte 發布:2024-11-24 08:08:18 瀏覽:636
idc資料庫 發布:2024-11-24 08:04:58 瀏覽:81
文件夾加密了怎麼辦 發布:2024-11-24 07:51:33 瀏覽:419
linux是實時系統嗎 發布:2024-11-24 07:23:17 瀏覽:143
java數據挖掘演算法 發布:2024-11-24 07:18:59 瀏覽:854
我的世界伺服器怎麼重開指令 發布:2024-11-24 07:14:13 瀏覽:156
python刪除dataframe 發布:2024-11-24 07:05:38 瀏覽:735
安卓機藍牙怎麼傳東西 發布:2024-11-24 06:58:34 瀏覽:109
android疊效果 發布:2024-11-24 06:58:33 瀏覽:992
富士通電腦伺服器設置u盤啟動 發布:2024-11-24 06:56:21 瀏覽:717