android - how to know when shared preference is done writing -


i have 2 activities. activity has button starts activity b. when hit button in activity b restarts activity a. when button hit goes onstop method activity b , in point update shared preferences user. i'm storing player data on shared preferences problem when activity restarted load same shared preferences doesn't show updated data saved while activity b stopped. reload app , shows date data. seems while being saved while activity b being stopped there isn't enough time when loaded while activity being restarted. how can tell whether shared preferences have finished being written or not? want load shared preferences once know sure shared preferences has been updated, possible?

i using commit method:

@override protected void onstop()  {     long dist = (long)treadmill_.mod.distance_;     long newdist = dist + playerinfomanager.getinstance().getdistancetraveled();     playerinfomanager.getinstance().setdistancetraveled(newdist);      float fastestsaved = playerinfomanager.getinstance().getfastestspeedacheived();     float fastestinsess = treadmill_.mod.fastestspeed;     if(fastestsaved<fastestinsess)         playerinfomanager.getinstance().setfastestspeedacheived(fastestinsess);      long time = (long)treadmill_.mod.time_;     long newtime = time + playerinfomanager.getinstance().gettotaltimeran();     playerinfomanager.getinstance().settotaltimeran(newtime);      log.e("onstop", "at run, run, run");     super.onstop(); } 

in playerinfomanager.getinstance().setdistancetraveled(newdist):

public void setdistancetraveled(long distancetraveled)  {     distancetraveled = distancetraveled;     editor edit = sp.edit();     edit.putlong("distancetraveled", distancetraveled);     edit.commit();  } 

sp sharedpreference instance:

private sharedpreferences sp; 

for activity when restarts:

@override protected void onrestart() {     super.onrestart();     loadstats();     log.e("onrestart", " "); }  public void loadstats() {     pim.loadall();     dis.settext(long.tostring(pim.getdistancetraveled()));     fastestspeed.settext(float.tostring(pim.getfastestspeedacheived()));     totaltime.settext(long.tostring(pim.gettotaltimeran()));     keepitup.settext(long.tostring(pim.getlongesttimeinkeepitup())); }      public void loadall() {// load saved player data sharedpreferences     distancetraveled = sp.getlong("distancetraveled", 0l);     fastestspeedacheived = sp.getfloat("fastestspeed", 0.0f);     totaltimeran = sp.getlong("totaltime", 0l);     longesttimeinkeepitup = sp.getlong("keepitup", 0l); } 

using .commit() method make sure data has been saved. see android doc sharedpreferences.

see commit , apply method


Comments

Popular posts from this blog

angularjs - ADAL JS Angular- WebAPI add a new role claim to the token -

php - CakePHP HttpSockets send array of paramms -

node.js - Using Node without global install -