a에서 어떤 데이터를 SharedPreferences 에서 가져와야 할 지 알고 있다면, b 에서 a로 데이터를 넘기실 필요가 없어요. a의 onStart이벤트에서 SharedPreferences에서 데이터를 불러오는 코드를 실행시키세요.
하지만, b에서만 알고 있을 경우라면 a에 데이터 자체를 넘기지 말고 어떤 데이터를 가져와야할지 만 넘기시고, onActivityResult나 onNewIntent 등을 이용해 처리해 주어야 할 것 같습니다.
다른 방법으로는 SharePreference에 데이터 변경을 감지하는 리스너를 추가할 수가 있습니다. 이걸 이용하면 좀 더 최적화된 구현이 가능할 것 같습니다. 아래 예제를 보세요.
// a.java (명확한 이름을 사용하세요)
// 편의상 MyActivity로 명명.
public class MyActivity extends AppCompatActivity implments SharedPreferences.OnSharedPreferenceChangeListener {
private SharedPreferences sharedPreferences = ....
@Override
public void onStart(...) {
super.onStart(...);
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onStop(...) {
super.onStop(...);
sharedPreferences. unregisterOnSharedPreferenceChangeListener(this);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// 필요한 처리
}
}
Activity가 어떤 인터페이스를 구현하는지와, onStart에서 리스너를 등록하고 onStop에 등록을 해제하는 부분을 눈여겨 보세요. 이렇게 해야 생길 수도 있는 앱이 백그라운드에 있을 때에 대한 안전한 처리와 memory leak를 방지할 수 있습니다.