當前位置:首頁 » 安卓系統 » android獨立service

android獨立service

發布時間: 2022-07-15 15:44:25

❶ 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。

熱點內容
pspfifa無緩存 發布:2025-01-24 16:45:13 瀏覽:164
androidhandler機制 發布:2025-01-24 16:41:10 瀏覽:935
安卓系統如何下載aov 發布:2025-01-24 16:29:53 瀏覽:572
iptables允許ip訪問 發布:2025-01-24 16:19:58 瀏覽:931
安卓80如何識別存儲卡許可權 發布:2025-01-24 16:19:54 瀏覽:231
存儲介質價格 發布:2025-01-24 16:19:18 瀏覽:150
刪除多個表sql 發布:2025-01-24 16:10:57 瀏覽:595
安卓設備版本哪裡看 發布:2025-01-24 16:06:00 瀏覽:549
編譯錯誤參數不可選 發布:2025-01-24 16:00:51 瀏覽:289
倉儲軟體用什麼伺服器 發布:2025-01-24 16:00:03 瀏覽:626