Android/Desgin Pattern 6

MVP패턴 (+BaseActivity, BasePresenter, BaseView)

MVP패턴 (+BaseActivity, BasePresenter, BaseView)NumPicker Sample App 만들 때 사용: https://github.com/lipnus/pickerGoogle Kotlin MVP todo Sample:https://github.com/googlesamples/android-architecture/tree/todo-mvp-kotlin/ BaseActivity.ktopen class BaseActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } //프레퍼런스에서 불러오기 open fun getStri..

Listener

AccessToken이 만료되었을 때, 재요청하는 기능.Retrofit으로 요청하며 비동기이므로 리스너를 사용. BaseActivity.ktopen 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(..

Callback(Listener) 예제

1. Callee(관찰당하는 곳, 결과 반환해주는 곳) 클래스public class Callee { //내부인터페이스 구현(외부도 상관없음) interface Callback{ void CallbackMethod(); } private boolean condition; private Callback callback; //생성자 Callee(){ this.condition = false; this.callback = null; } public void setCallback(Callback callback){ this.callback = callback; //1초마다 condition을 체크하고 5초가 되면 true로 바꿈 Thread thread = new Thread(new Runnable() { @Ov..

싱글톤(Singleton) 패턴

Kotlin에서 이런 개념을 쓰고 싶으면 Objeect를 쓰면 된다. 동기화 문제도 저절로 처리.그래서 코틀린 코드로는 이짓을 해볼 의미가 없다. 자바에서는 직접 구현해주어야 한다. 1. 기본형public class TestSingleton { private static TestSingleton testSingletonObj; private TestSingleton(){} public static TestSingleton getTestSingletonObj() { if(testSingletonObj == null){ testSingletonObj = new TestSingleton(); } return testSingletonObj; } } 멀티 Thread환경에서 동기화문제가 있다. 2. getTest..