package Ġcom . z ac 4 j . system . service Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . app . Pending Intent Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build . VERSION _ CODES Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Handler Thread Ċ import Ġandroid . os . IB inder Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Message Ċ import Ġandroid . os . Process . THREAD _ PRIORITY _ BACKGROUND Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcom . z ac 4 j . system . ui . MainActivity Ċ Ċ /** Ċ Ġ* ĠService Ġcode Ġsample . Ċ Ġ* Ċ Ġ* Ġ@ author : ĠZ ac Ċ Ġ* Ġ@ date : Ġ 2 0 2 2 / 3 / 1 6 Ċ Ġ*/ Ċ class ĠSample Intent Service Ġ: ĠService () Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠNOT IFICATION _ ID Ġ= Ġ 0 x 1 0 0 1 ; ĊĠĠĠ Ġprivate Ġconst Ġval ĠCHAN NEL _ NAME Ġ= Ġ" default "; ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġservice Looper : ĠL ooper ? Ġ= Ġnull ĊĠ Ġprivate Ġvar Ġservice Handler : ĠService Handler ? Ġ= Ġnull ĊĊĠ Ġprivate Ġinner Ġclass ĠService Handler ( lo oper : ĠL ooper ) Ġ: ĠHandler ( lo oper ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠ Ġ// Ġtodo Ġsome Ġwork Ġhere ĊĊĠĠĠĠĠ Ġ// ĠStop Ġthe Ġservice Ġusing Ġthe Ġstart Id , Ġso Ġthat Ġwe Ġdon 't Ġstop Ġthe ĊĠĠĠĠĠ Ġ// Ġservice Ġin Ġthe Ġmiddle Ġof Ġhandling Ġanother Ġjob ĊĠĠĠĠĠ Ġstop Self ( msg . arg 1 ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġpending Intent : ĠPending Intent Ġ= ĊĠĠĠ ĠIntent ( this , ĠMainActivity :: class . java ). let Ġ{ Ġnotification Intent Ġ-> ĊĠĠĠĠĠ ĠPending Intent . getActivity ( this , Ġ 0 , Ġnotification Intent , Ġ 0 ) ĊĠĠĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCreate Ġforeground Ġnotification ĊĠĠ Ġ*/ ĊĠ Ġ@ Requires Api ( VERSION _ CODES . O ) ĊĠ Ġprivate Ġval Ġnotification : ĠNotification Ġ= ĠNotification . Builder ( this , ĠCHAN NEL _ NAME ) ĊĠĠĠ Ġ. setContent Title (" notification Ġtitle ") ĊĠĠĠ Ġ. setContent Text (" notification Ġmessage ") ĊĠĠĠ Ġ. setContent Intent ( pending Intent ) ĊĠĠĠ Ġ. set Ticker (" Ticker ") ĊĠĠĠ Ġ. build () ĊĊĠ Ġoverride Ġfun ĠonCreate () Ġ{ ĊĠĠĠ Ġ// ĠStart Ġup Ġthe Ġthread Ġrunning Ġthe Ġservice . ĊĠĠĠ Ġ// ĠWe Ġcreate Ġa Ġseparate Ġthread Ġbecause Ġthe Ġservice Ġnormally Ġruns Ġin ĊĠĠĠ Ġ// Ġthe Ġprocess 's Ġmain Ġthread , Ġwhich Ġwe Ġdon 't Ġwant Ġblock . ĠWe Ġalso Ġmake ĊĠĠĠ Ġ// Ġit Ġbackground Ġpriority Ġso ĠCPU - int ensive Ġwork Ġwill Ġnot Ġdis rupt Ġthe ĠUI . ĊĠĠĠ ĠHandler Thread (" Sample Intent Service ", ĠTHREAD _ PRIORITY _ BACKGROUND ). apply Ġ{ ĊĠĠĠĠĠ Ġstart () ĊĊĠĠĠĠĠ Ġ// ĠGet Ġthe ĠHandler Thread 's ĠL ooper ĊĠĠĠĠĠ Ġservice Looper Ġ= Ġlo oper ĊĠĠĠĠĠ Ġservice Handler Ġ= ĠService Handler ( lo oper ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġstart Foreground ( NOTIFICATION _ ID , Ġnotification ) ĊĊĠĠĠ Ġ// ĠFor Ġeach Ġstart Ġrequest , Ġsend Ġa Ġmessage Ġto Ġstart Ġa Ġjob Ġand Ġdeliver Ġthe ĊĠĠĠ Ġ// Ġstart ĠID Ġso Ġwe Ġknow Ġwhich Ġrequest Ġwe 're Ġstopping Ġwhen Ġwe Ġfinish Ġthe Ġjob ĊĠĠĠ Ġservice Handler ?. obtain Message ()?. also Ġ{ Ġmsg Ġ-> ĊĠĠĠĠĠ Ġmsg . arg 1 Ġ= Ġstart Id ĊĠĠĠĠĠ Ġservice Handler ?. sendMessage ( msg ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠIf Ġservice Ġget Ġkilled , Ġafter Ġreturning Ġfrom Ġhere , Ġrestart ĊĠĠĠ Ġreturn ĠSTART _ STICK Y ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠ Ġ// ĠNo Ġbinder Ġprovider ĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} Ċ }