It may work but it's definitely bad practice to wait for an event using while-loop. To catch some event try to use Observer pattern. The idea of this pattern is to split up objects into observers(wait for an event) and observable(register/catch an event and notify observers)
There's built in class and interface in Java for this approach. Example:
Observable:
import java.util.Observable;
public class SharedPrefsWrapper extends Observable{
public static final int EVENT_PUT_STRING = 0;
public void putString(String key, String value){
//put string into shared preferences
//then notify Observers
notifyObservers(EVENT_PUT_STRING);
}
}
Observer:
import java.util.Observable;
import java.util.Observer;
public class SomeActivity extends Activity implements Observer {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.some_activity);
SharedPrefsWrapper prefs;
//...
prefs.addObserver(this);
}
@Override
public void update(Observable observable, Object event) {
if(event.equals(SharedPrefsWrapper.EVENT_PUT_STRING)){
//event of writing string is caught
}
}
}