마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 자동으로 새로 고침 하는 방법

0 추천
EX) a.java 에서 버튼을 눌림과 동시에 b.java에 데이터만 전달되고 b.java를 새로 고침 하는 방법이 있을까요?

데이터는 sharedPreferences 를 이용해서 넘길거고 데이터를 받자마자 자동으로 새로 고침을 하는 방법이 궁금합니다.....
개미1 (1,260 포인트) 님이 2021년 10월 18일 질문

1개의 답변

0 추천

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를 방지할 수 있습니다.

 

spark (227,470 포인트) 님이 2021년 10월 18일 답변
...