android獨立service
❶ Android中Service服務有哪些
Service分為本地服務(LoaclService)和遠程服務(RemoteService)。
本地服務:用於應用程序內部,這也與客戶端(可以理解也activity)進行通信就很方便。
遠程服務:用於android系統內部的應用程序之間。
❷ android中的service到底起什麼作用 博客
Service 是android的一種機制,當它運行的時候如果是Local Service,那麼對應的 Service 是運行在主進程的 main 線程上的。如:onCreate,onStart 這些函數在被系統調用的時候都是在主進程的 main 線程上運行的。如果是Remote Service,那麼對應的 Service 則是運行在獨立進程的 main 線程上。因此請不要把 Service 理解成線程,它跟線程半毛錢的關系都沒有!
既然這樣,那麼我們為什麼要用 Service 呢?其實這跟 android 的系統機制有關,我們先拿 Thread 來說。Thread 的運行是獨立於 Activity 的,也就是說當一個 Activity 被 finish 之後,如果你沒有主動停止 Thread 或者 Thread 里的 run 方法沒有執行完畢的話,Thread 也會一直執行。因此這里會出現一個問題:當 Activity 被 finish 之後,你不再持有該 Thread 的引用。另一方面,你沒有辦法在不同的 Activity 中對同一 Thread 進行控制。
舉個例子:如果你的 Thread 需要不停地隔一段時間就要連接伺服器做某種同步的話,該 Thread 需要在 Activity 沒有start的時候也在運行。這個時候當你 start 一個 Activity 就沒有辦法在該 Activity 裡面控制之前創建的 Thread。因此你便需要創建並啟動一個 Service ,在 Service 裡面創建、運行並控制該 Thread,這樣便解決了該問題(因為任何 Activity 都可以控制同一 Service,而系統也只會創建一個對應 Service 的實例)。
因此你可以把 Service 想像成一種消息服務,而你可以在任何有 Context 的地方調用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,來控制它,你也可以在 Service 里注冊 BroadcastReceiver,在其他地方通過發送 broadcast 來控制它,當然這些都是 Thread 做不到的。
❸ android中如何自定義一個Service
在編寫Android應用程序時,我們一般將一些計算型的邏輯放在一個獨立的進程來處理,這樣主進程仍然可以流暢地響應界面事件,提高用戶體驗。Android系統為我們提供了一個Service類,我們可以實現一個以Service為基類的服務子類,在裡面實現自己的計算型邏輯,然後在主進程通過startService函數來啟動這個服務。在本文中,將詳細分析主進程是如何通過startService函數來在新進程中啟動自定義服務的。
❹ AndroidService是什麼
Service就是一個應用程序組件,用來執行一些長時間的操作,然而不與用戶交互或者為其他應用程序提供一些功能。每一個Service類都必須定義在AndroidManifest.xml中,以<service>tag開頭。
❺ android service有什麼用
Service是Android中實現程序後台運行的解決方案,它非常適合執行那些不需要和用戶交互而
且還要求長期運行的任務。Service的運行不依賴於任何用戶界面,即使程序被切換到後台,或
者用戶打開了另外一個應用程序,Service仍然能夠保持正常運行。
所以你說service有什麼用
❻ android service 可以單獨存在嗎
這要看你的service是通過什麼方式啟動的
一:如果你通過startService()方式啟動的話,那麼當你關閉了activity之後 你的service依然還在運行當中。
二:如果你通過bindService()方式啟動的話,那麼他是跟隨activity一起綁定的,那麼也就是說當activity銷毀的時候這個service也跟隨一起銷毀了!
你可以看看 application 這個也挺好使用的 ,可以當做全局的回調對象使用!
❼ Android中的Service到底起什麼作用
Service 是android的一種機制,當它運行的時候如果是Local Service,那麼對應的 Service 是運行在主進程的 main 線程上的。如:onCreate,onStart 這些函數在被系統調用的時候都是在主進程的 main 線程上運行的。如果是Remote Service,那麼對應的 Service 則是運行在獨立進程的 main 線程上。因此請不要把 Service 理解成線程,它跟線程半毛錢的關系都沒有!
既然這樣,那麼我們為什麼要用 Service 呢?其實這跟 android 的系統機制有關,我們先拿 Thread 來說。Thread 的運行是獨立於 Activity 的,也就是說當一個 Activity 被 finish 之後,如果你沒有主動停止 Thread 或者 Thread 里的 run 方法沒有執行完畢的話,Thread 也會一直執行。因此這里會出現一個問題:當 Activity 被 finish 之後,你不再持有該 Thread 的引用。另一方面,你沒有辦法在不同的 Activity 中對同一 Thread 進行控制。
舉個例子:如果你的 Thread 需要不停地隔一段時間就要連接伺服器做某種同步的話,該 Thread 需要在 Activity 沒有start的時候也在運行。這個時候當你 start 一個 Activity 就沒有辦法在該 Activity 裡面控制之前創建的 Thread。因此你便需要創建並啟動一個 Service ,在 Service 裡面創建、運行並控制該 Thread,這樣便解決了該問題(因為任何 Activity 都可以控制同一 Service,而系統也只會創建一個對應 Service 的實例)。
因此你可以把 Service 想像成一種消息服務,而你可以在任何有 Context 的地方調用 Context.startService、Context.stopService、Context.bindService,Context.unbindService,來控制它,你也可以在 Service 里注冊 BroadcastReceiver,在其他地方通過發送 broadcast 來控制它,當然這些都是 Thread 做不到的。
❽ 在android里Service不是一個單獨的進程也不是一個單獨的線程,那麼為什麼用戶可以在
根據API的描述:
service是運行在主線程上的,而不是運行在另一個線程中,如果你想在service中處理很占時間的操作,你必須在service中開線程,這樣可以降低activity沒有響應的風險。
❾ android service有什麼用
Service是Android系統中的四大組件之一,它是一種長生命周期的,沒有可視化界面,運行於後台的一種服務程序。如果service是被開啟的,那麼它的活動生命周期和整個生命周期一同結束。如果service是被綁定的,它們它的活動生命周期是在onUnbind()方法返回後結束。
service積極活動的生命時間(active lifetime)是從onStartCommand()或onBind()被調用開始,它們各自處理由startService()或bindService()方法傳過來的Intent對象。
(9)android獨立service擴展閱讀
service整體的生命時間是從onCreate()被調用開始,到onDestroy()方法返回為止。和activity一樣,service在onCreate()中進行它的初始化工作,在onDestroy()中釋放殘留的資源。
比如,一個音樂播放service可以在onCreate()中創建播放音樂的線程,在onDestory()中停止這個線程。onCreate()和onDestroy()會被所有的service調用,不論service是通過startService()還是bindService()建立。
❿ 深入剖析Android系統中Service和IntentService的區別
表象Service中可以正常顯示Toast,IntentService中不能正常顯示Toast,在2.3系統上,不顯示toast,在4.3系統上,toast顯示,但是不會消失。2.原因Toast要求運行在UI主線程中。Service運行在主線程中,因此Toast是正常的。IntentService運行在獨立的線程中,因此Toast不正常。3.在IntentService中顯示Toast利用Handler,將顯示Toast的工作,放在主線程中來做。具體有兩個實現方式。Handler的post方式實現,這個方式比較簡單。(finalIntentServicecontext,finalCharSequencetext,finalintration){Handlerhandler=newHandler(Looper.getMainLooper());handler.post(newRunnable(){@Overridepublicvoidrun(){Toast.makeText(context,text,ration).show();}});}Handler的msg方式實現,這個方式比較復雜。HandlermsgHandler=newHandler(Looper.getMainLooper()){@(Messagemsg){Toast.makeText(ToastIntentService.this,msg.getData().getString("Text"),Toast.LENGTH_SHORT).show();super.handleMessage(msg);}};privatevoidshowToastByMsg(finalIntentServicecontext,finalCharSequencetext,finalintration){Bundledata=newBundle();data.putString("Text",text.toString());Messagemsg=newMessage();msg.setData(data);msgHandler.sendMessage(msg);}4.關於耗時操作Service中如果有耗時的操作,要開啟一個Thread來做。IntentService是在獨立的線程中,所以可以進行一些耗時操作。5.考慮AsyncTask與Service的使用區別如果是全後台的工作,使用Service,結果的提示可以使用Notification。如果是非同步工作,工作結束後需要更新UI,那麼最好使用Thread或者AsyncTask。