Android重要组件之一 Service 服务讲解学习(一)
? 在Android有異步處理需要重要的Service和Handler組件,今天首先學習一下Service組件,
? ? ?其中涉及到Android Service中進程間通信和bindService()的方法下一次在講解學習
? 1:首先來看看在文檔中對于Service的概念的解釋:
? ? Service是Android系統中的一種組件,重要性可以堪比Activity,但是也有顯著的區別,Activity可以和用戶進行交互,但是Service只能運行在后臺,不能和用戶直接交互;
? ? 當我們退出應用的時候,Service還會在后臺運行,進程不會結束;特別注意我們需要使用的Service的時候,我們需要在AndroidManifset.xml文件的service標簽進行注冊
? ? 然后我們我們有兩種啟動Service的方法包括(①:Context.startService() 和②: Context.bindService()
? ?2:需要使用Service的地方:
? ? 在文檔中舉了下面兩個例子
? ? ?最讓我們想到的是應該是播放器的時候,我們可能需要邊聽歌邊干些其他的事情,此時我們會退出播放器的應用,如果不適用Service的話,一退出應該應用我們就不能聽歌了;還有比如我們需要通過網絡獲取數據,由于使用網絡獲取數據的速度比較慢,此時我們可以使用Service來在后臺進行獲取更新,隔一段時間把獲取到的數據發回,而不是讓我每次要獲取數據都要打開應用;
?3:Service與Activity通信:
Service后端的數據最終還是要呈現在前端Activity之上的,
在啟動Service的時候,文檔中這樣描述:Note that services, like other application objects, run in the main thread of their hosting process
?主要該Service,和其他應用對象一樣,運行其應用進程主線程上
? ?4:Service 啟動方式:
一、context.startService()
二、context.bindService();
使用Service之前必須在AndroidMainfest.xml 中使用<service android:name=".service的類名"/>進行注冊
?5:Service的使用方法(我今天主要學習的是startService)
? ?第一步:自己寫一個繼承Service類的類
? ?第二步:在AndroidMainfest.xml文件中進行注冊
? ?第三步:startService()
? 6:生命周期:
? 首先看下聲明周期的運行圖
? ?
?①: context.startService() 啟動Service是會經歷一下幾個方法
啟動的時候:context.startService() ---> onCreate() ---> onStartCommand()
? 銷毀的時候:ontext.stopService() ? ---> onDestroy();
?如果Service沒運行,則此時會先調用onCreate()方法,然后再調用onStartCommand();
?如果Service已經在運行,則只調用onStartCommand(),Service的onStartCommand(),方法可能會調用多次
?②:
?啟動時候:context.bindService() ---> onCreate() --->onBind();
?銷毀的時候:onUnibind() ---> onDestroy()
onBind() 將會給客戶端返回一個IBind接口的實例,此時客戶端可以去調用服務的方法,不過此時Activity與Service算是綁定在一起了
意思是說如果Activity退出,那么此時的Service也會退出
?
接下來是實例Demo:
??
繼承Service的方法: import android.app.Service; import android.content.Intent; import android.os.IBinder; public class ServiveTest extends Service { @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { System.out.println("onCreat------->"); super.onCreate(); } @Override public void onDestroy() { // TODO Auto-generated method stub System.out.println("onDestroy------->"); super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { System.out.println("onStartCommand------->"); return super.onStartCommand(intent, flags, startId); } }? ? 今天就初步學習了一下Service的使用context.startService()的方法,下一次會進行使用context.bindService()和進程間通信的學習
轉載于:https://blog.51cto.com/2939716/1376506
總結
以上是生活随笔為你收集整理的Android重要组件之一 Service 服务讲解学习(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLite命令行程序说明
- 下一篇: 如何制作网线标签和贴标签