AccessToken이 만료되었을 때, 재요청하는 기능.
Retrofit으로 요청하며 비동기이므로 리스너를 사용.
BaseActivity.kt
open class BaseActivity : AppCompatActivity() {
internal val apiService: ApiService by lazy { ApiService.create() }
internal var disposable: Disposable? = null
interface RefreshtokenListener{
fun onSuccess()
fun onError()
}
override fun onDestroy() {
disposable?.dispose()
super.onDestroy()
}
...
open fun getStringPref(key: String):String {
return PreferenceHelper.customPrefs(applicationContext, USERINFO_PREF).getString(key, "empty")
}
//액세스 토큰 재요청
open fun refreshToken(refreshTokenListener: RefreshtokenListener){
val refreshToken = getStringPref("refresh_token")
disposable =
apiService.member_refresh( refreshToken )
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
{ result ->
refreshTokenListener.onSuccess()
},
{ error ->
refreshTokenListener.onError()
}
)
}
}
interface RefreshtokenListener{
fun onSuccess()
fun onError()
}
BaseActivity를 상속한 Activity가 refreshToken 매소드 사용 시 인터페이스를 구현해서 호출.
TestActivity.kt
...
//액세스 토큰이 만료된 경우
refreshToken(object : RefreshtokenListener{
override fun onSuccess() {
}
override fun onError() {
}
})...
'Android > Desgin Pattern' 카테고리의 다른 글
MVC, MVP, MVVM 비교 (0) | 2019.05.10 |
---|---|
MVP패턴 (+BaseActivity, BasePresenter, BaseView) (0) | 2019.05.07 |
Callback(Listener) 예제 (0) | 2018.12.11 |
[kotlin] MVP패턴 (0) | 2018.12.10 |
싱글톤(Singleton) 패턴 (0) | 2018.12.09 |