Calling Stopself () in the service's Onstartcommand () does not immediately destroy the service, but waits until Onstartcommand () runs out of destroy.
public class Testservice extends Service {private String TAG = "Testservice"; @Overridepublic void OnCreate () {//TODO Auto -generated method Stublog.i (TAG, "onCreate"); Super.oncreate ();} @Overridepublic int Onstartcommand (Intent Intent, int flags, int startid) {//TODO auto-generated method stublog.i (TAG, "O Nstartcommand "); Stopself (); LOG.I (TAG, "I'm still running!"); return Super.onstartcommand (Intent, flags, Startid);} @Overridepublic void OnDestroy () {//TODO auto-generated method stublog.i (TAG, "OnDestroy"); Super.ondestroy ();} @Overridepublic ibinder onbind (Intent Intent) {//TODO auto-generated method Stubreturn null;}}
Mainactivity use a button to start the service:
@Overridepublic void OnClick (View v) {//TODO auto-generated method Stubswitch (V.getid ()) {case R.id.testbtn:intent Inten t = new Intent (this,testservice.class); StartService (Intent); break;default:break;}}
Printing results:
It is also important to note that. multiple calls to Stopself () do not throw an exception.
"Android" calls Stopself () in the service's Onstartcommand () should be aware of the issue