欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

android中service的實現(xiàn)方法,android service組件的功能

android中service的實現(xiàn)方法是

異步執(zhí)行

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設,青羊企業(yè)網(wǎng)站建設,青羊品牌網(wǎng)站建設,網(wǎng)站定制,青羊網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,青羊網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

android中,activity、service都是在主線程,service與activity的主要區(qū)別就是service沒有前臺界面,不能直接與用戶交互,另外可以相對保證不會被系統(tǒng)隨便的kill掉。所以service適用于一些無需交互的后臺操作,但如果你直接在service中進行耗時操作的話,因為在主線程所以依然會出現(xiàn)和activity主線程一樣的超時的問題,所以好的方式是在service中啟動其他的線程去執(zhí)行耗時操作。

Android應用組件 —— Service

官方原文: 地址

本文摘錄自官方原文,方便自己觀看。

service 是一個可以在后臺長時間運行的操作而不提供用戶界面的應用組件。服務可以由其他應用組件啟動,而且即使用戶切換到其他應用程序,服務仍將在后臺繼續(xù)運行。此外,組件可以綁定到服務,以與之進行交互,甚至執(zhí)行進程間的通信(IPC)

服務基本分為兩種形式:

啟動

綁定

上述雖然分開概括這兩種服務,但是服務可以同時以這兩種方式運行,也就是說,他既可以是啟動服務(以無限期運行),也允許綁定。問題在于是否實現(xiàn)了一組回調方法: onStartCommand() (允許組件啟動服務)和 onBing() (允許綁定服務)。

無論應用是出于啟動狀態(tài)還是綁定狀態(tài),亦或處于啟動并且綁定狀態(tài),任何應用組件均可以像使用Activity那么調用Itent來使用服務(即使此服務來自另一應用)。 不過,您可以通過清單文件將服務聲明為私有服務,并阻止其他應用訪問。 使用清單文件聲明服務部分將對此做更詳盡的闡述。

注意:

服務在其托管進程的主線程中運行,它既不創(chuàng)建自己的線程,也不在單獨的進程中運行(除非另行指定)。這意味著,如果服務將執(zhí)行任何CPU密集型工作或者阻止性操作(我理解為耗時操作,例如 MP3 播放或聯(lián)網(wǎng)),則應在服務內創(chuàng)建新線程來完成這項工作。通過使用單獨的線程,可以降低發(fā)生“應用無響應”(ANR) 錯誤的風險,而應用的主線程仍可繼續(xù)專注于運行用戶與 Activity 之間的交互。

要創(chuàng)建服務,您必須創(chuàng)建 Service 的子類(或使用它的一個現(xiàn)有子類)。在實現(xiàn)中,您需要重寫一些回調方法,以處理服務生命周期的某些關鍵方面并提供一種機制將組件綁定到服務(如適用)。 應重寫的最重要的回調方法包括:

onStartCommand()

onBind()

onCreate()

onDestroy()

如果組件通過調用 startService() 啟動服務(這會導致對 onStartCommand() 的調用),則服務將一直運行,直到服務使用 stopSelf() 自行停止運行,或由其他組件通過調用 stopService() 停止它為止。

如果組件是通過調用 bindService() 來創(chuàng)建服務(且未調用 onStartCommand() ,則服務只會在該組件與其綁定時運行。一旦該服務與所有客戶端之間的綁定全部取消,系統(tǒng)便會銷毀它。

如同 Activity(以及其他組件)一樣,您必須在應用的清單文件中聲明所有服務。

要聲明服務,請?zhí)砑? service 元素作為 application 元素的子元素。例如:

為了確保應用的安全性, 請始終使用顯式 Intent 啟動或綁定 Service,且不要為服務聲明 Intent 過濾器。 啟動哪個服務存在一定的不確定性,而如果對這種不確定性的考量非常有必要,則可為服務提供 Intent 過濾器并從 Intent 中排除相應的組件名稱,但隨后必須使用 setPackage() 方法設置 Intent 的軟件包,這樣可以充分消除目標服務的不確定性。

此外,還可以通過添加 android:exported 屬性并將其設置為 "false" ,確保服務僅適用于您的應用。這可以有效阻止其他應用啟動您的服務,即便在使用顯式 Intent 時也如此

Service

IntentService

簡單地說,服務是一種即使用戶未與應用交互也可在后臺運行的組件。 因此,您應僅在必要時才創(chuàng)建服務。

如需在主線程外部執(zhí)行工作,不過只是在用戶正在與應用交互時才有此需要,則應創(chuàng)建新線程而非服務。 例如,如果您只是想在 Activity 運行的同時播放一些音樂,則可在 onCreate() 中創(chuàng)建線程,在 onStart() 中啟動線程,然后在 onStop() 中停止線程。您還可以考慮使用 AsyncTask 或 HandlerThread,而非傳統(tǒng)的 Thread 類。

前臺服務被認為是用戶主動意識到的一種服務,因此在內存不足時,系統(tǒng)也不會考慮將其終止。 前臺服務必須為狀態(tài)欄提供通知,放在“正在進行”標題下方,這意味著除非服務停止或從前臺移除,否則不能清除通知。

要請求讓服務運行于前臺,請調用 startForeground() 。此方法采用兩個參數(shù):唯一標識通知的整型數(shù)和狀態(tài)欄的 Notification 。例如:

注意 :提供給 startForeground() 的整型 ID 不得為 0。

要從前臺移除服務,請調用 stopForeground() 。此方法采用一個布爾值,指示是否也移除狀態(tài)欄通知。 此方法不會停止服務。 但是,如果您在服務正在前臺運行時將其停止,則通知也會被移除。

與 Activity 類似,服務也擁有生命周期回調方法,您可以實現(xiàn)這些方法來監(jiān)控服務狀態(tài)的變化并適時執(zhí)行工作。 以下框架服務展示了每種生命周期方法:

注 :與 Activity 生命周期回調方法不同,您 不 需要調用這些回調方法的超類實現(xiàn)。

注 :盡管啟動服務是通過調用 stopSelf() 或 stopService() 來停止,但是該服務并無相應的回調(沒有 onStop() 回調)。因此,除非服務綁定到客戶端,否則在服務停止時,系統(tǒng)會將其銷毀 — onDestroy() 是接收到的唯一回調。

Android中服務service

本文原文連接

Service是Android中的四大組件之一,它的級別和Activity差不多。只不過Service沒有頁面顯示,只能后臺運行,可以和其他組件進行交互。

Service的后臺運行并不是子線程,是在主線程中進行的,只是它沒有界面顯示。如果Service進行了耗時操作同樣需要開啟子線程,否則會跟Activity一樣出現(xiàn)ANR問題(application not response–程序沒有響應)。

補充說明:

主線程的內容包括UI和后臺,只要程序中的UI或者后臺其中一個在跑,程序都算是在運行狀態(tài)。

1,創(chuàng)建一個自己的TestService繼承Service

2,必須實現(xiàn)重寫其中的onBind方法,可以在里邊做各種操作,也可以接收傳遞過來的Intent的數(shù)據(jù)。

(在Android Studio中可以直接新建一個Service)

服務的注冊是四大組件中最簡單的一個,一般只要設置name屬性就可以了。

1,startService()啟動

(1)啟動服務startService:onCerate(),onStart()

(2)停止服務stopService:onDestroy()

此方法啟動服務,服務如果未被創(chuàng)建,系統(tǒng)會先調用onCreate()方法,接著調用onStrat()方法。如果調用startService前服務已經(jīng)被啟動,多次調用啟動方法,不會多次調用onCreate,但會導致多次調用onStrat。

2,bindService()啟動

(1)綁定bindService:onCreate(),onBind()

(2)解除綁定unbindService:onUnbind()

(3)正常停止程序服務的方法是先接觸綁定unbindService,在停止服務stopService

綁定后調用stopService方法,這時候是不能停止服務的,如果這時再調用解綁unbindService,程序會先解綁,后停止服務。

用此方法啟動服務,在服務未被創(chuàng)建時,會先調用onCreate(),接著調用onBind()方法,這時候調用者和服務綁定在一起,調用者退出,系統(tǒng)會先調用服務的onUnbind(),然后onDestroy()。如果調用bindService之前服務已經(jīng)被綁定,多次調用bindService并不會導致onCreate()和onBind()方法被多次調用。如果調用者想與正在綁定的服務解除綁定,可以調用unbindService()。

(1),onCerate()服務第一次被創(chuàng)建

(2),onStartComand()服務開始工作

(3),onBind()服務已經(jīng)綁定

(4),onUnBind()服務解綁

(5),onDestroy()服務已經(jīng)停止

普通的Service進行耗時操作要創(chuàng)建一個線程去完成,因為service是在主線程運行的,并且這個子線程完成工作要手動停止 。IntentService是繼承了Service并處理起步請求的一個類,在IntentService內有一個工作線程,來處理耗時操作,啟動IntentService的方式和啟動傳統(tǒng)的Service是一樣,當任務執(zhí)行完成后,IntentService會自動停止,而不需要我們去控制。

可以啟動多次IntentService,每一個耗時操作會以工作隊列的方式在IntentService的onHandleIntent回調方法中執(zhí)行,并且每次只會執(zhí)行一個工作線程,執(zhí)行完第一個再執(zhí)行第二個,以此類推,而且,所有請求都在一個單線程中,不會阻塞主線程,同一時間只處理一個請求。

IntentService優(yōu)點

1,省去了在Service中開線程的麻煩

2,當操作完成時,不用手動停止Service。IntentService是Service,但是比Service更智能。

Android使用JobService實現(xiàn)后臺服務

前言

在Android經(jīng)常要實現(xiàn)定時服務,定時某個時刻推送消息或者更新數(shù)據(jù)。比如需要在夜晚8:00-10:00之間,推送一條消息、彈窗、或者其他操作。

一般我們可能是開啟Service,在Service中使用AlarmManager,setRepeating定時請求,但是從API19起,并不能保證時效的準確,在5.0以后,Google推出了一個JobService,用來執(zhí)行一些并非即時執(zhí)行的后臺進程。

使用

在JobService中有兩個抽象方法onStartJob(JobParameters)和onStopJob(JobParameters)。onStartJob在JobService被調度到的時候會執(zhí)行,我們只需要繼承JobService然后重寫onStartJob方法,并在里面執(zhí)行我們的后臺任務就可以了。

This service executes each incoming job on a Handler running on your application's

main thread. This means that you must offload your execution logic to another

thread/handler/AsyncTask of your choosing. Not doing so will result in blocking any

future callbacks from the JobManager - specifically onStopJob(android.app.job.JobParameters), which is meant to inform you that the

scheduling requirements are no longer being met.

即:JobService默認在主線程中處理傳入的每個操作,這意味著,你必須開一個新線

程來執(zhí)行你的耗時操作,如果不這樣操作,將會阻塞來自JobManager的任何操作,特別是onStopJob操作

在Activity中,啟動服務

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

if (Build.VERSION.SDK_INT = Build.VERSION_CODES.LOLLIPOP) {

doService();

}

}

例子里可以看到,一共有五個條件,

如果我們的后臺任務滿足JobService的一個或多個約束條件,就可以考慮是不是應該用JobService來執(zhí)行。

文章標題:android中service的實現(xiàn)方法,android service組件的功能
瀏覽路徑:http://chinadenli.net/article26/dsdigjg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、定制網(wǎng)站標簽優(yōu)化、外貿網(wǎng)站建設商城網(wǎng)站、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

外貿網(wǎng)站制作