Android/Desgin Pattern

Listener

lipnus 2019. 3. 21. 11:32
반응형

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