Develop/안드로이드 (Android)

[Android] BaseApplication, BaseActivity 활용하기 / 자동로그인 로그아웃 by using LocalStore

안다희 2019. 3. 9. 22:13
728x90

https://uroa.tistory.com/43


BaseApplication에서 

public static LocalStore getLocalStore(){
return localStore;
}

이렇게 쓰면 


어디서든 접근가능하니까


BaseActivity 에서

public LocalStore getLocalStore() {
return ((BaseApplication) getApplication()).getLocalStore();
}

이렇게 써주고 다른 activity에서 extends BaseActivity 해주면 어디서든 접근 가능!



=======

자동로그인을 위해서는 localStore에 token 세 개가 저장되어있어야 하는데 이거를 baseActivity에서 맨 첨에

public class BaseActivity extends AppCompatActivity {

public String userId = getLocalStore().getStringValue(LocalStore.UserId);
public String accessToken = getLocalStore().getStringValue(LocalStore.AccessToken);
public String idToken = getLocalStore().getStringValue(LocalStore.IdToken);
public String refreshToken = getLocalStore().getStringValue(LocalStore.RefreshToken);

이렇게 해주면 되는줄알았는데 로그아웃하면 null로 바뀌어야 하잖아 근데 이건 한번대입하고 끝이니까

null로 저장하고 다시 쓰려니까 계속 첨에 대입했던애로만 되는거여 그래서 


public String getUserId() { return getLocalStore().getStringValue(LocalStore.UserId); }
public String getAccessToken() { return getLocalStore().getStringValue(LocalStore.AccessToken); }
public String getIdToken() { return getLocalStore().getStringValue(LocalStore.IdToken); }
public String getRefreshToken() { return getLocalStore().getStringValue(LocalStore.RefreshToken); }

항상 이렇게 실시간으로 가져올 수 있게 함수로 접근을 했음! 항상 그때그때 맞는 데이터 가져올 수 있게 설정해놓자!!





+) in LocalStore, doing Logout!

public void clearTokenValues() { //logout
setStringValue(AccessToken, null);
setStringValue(IdToken, null);
setStringValue(RefreshToken, null);

}