java - Android service onDestroy method runs on delay after stopService() called -


i using service run timer controlled using main activity. however, lines of code comes after calling stopservice() seems run before ondestroy() method in service.

here's code in mainactivityclass calls stopservice():

public void onclicklayouts(view v){     //on click layout s      //behaviour     stopservice(intenttimerservice);     sharedpreferences.edit().putboolean("issselected", true).apply();     updatelayout();     if(sharedpreferences.getboolean("isplaying", false)){         runtimerservice();     } } 

where runtimerservice() is:

public void runtimerservice(){     sharedpreferences.edit().putint("inttimeonbegin", (int) systemclock.elapsedrealtime()).apply();     startservice(intenttimerservice); } 

this ondestroy() method in serviceclass:

@override public void ondestroy() {     super.ondestroy();      //runs on service end      //behaviour     handler.removecallbacks(runnable);     if(sharedpreferences.getboolean("issselected", true)){         sharedpreferences.edit().putint("intstime", inttime).apply();     }else{         sharedpreferences.edit().putint("intptime", inttime).apply();     }     inttime = 0; } 

where runnable is:

    handler = new handler();     runnable = new runnable() {         @override         public void run() {             //runnable              //behaviour             if(sharedpreferences.getboolean("issselected", true)){                 //runs if s selected                  //behaviour                 inttime = sharedpreferences.getint("intstime", 0) + ((int) systemclock.elapsedrealtime() - sharedpreferences.getint("inttimeonbegin", 0));                 sharedpreferences.edit().putstring("stringstime", formattime(inttime)).apply();                 sharedpreferences.edit().putstring("stringptime", formattime(sharedpreferences.getint("intptime", 0))).apply();             }else{                 //runs if p selected                  //behaviour                 inttime = sharedpreferences.getint("intptime", 0) + ((int) systemclock.elapsedrealtime() - sharedpreferences.getint("inttimeonbegin", 0));                 sharedpreferences.edit().putstring("stringptime", formattime(inttime)).apply();                 sharedpreferences.edit().putstring("stringstime", formattime(sharedpreferences.getint("intstime", 0))).apply();             }              //set runnable repeat interval             handler.postdelayed(this, 1);         }     }; 

so presumably, once call onclicklayouts() in mainactivity should save value of inttime "intstime" in sharedpreferences. however, not case, when run app , call onclicklayouts() saves value of inttime "intptime" instead. why this? in advance :)


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -