안드로이드는 context 라는 걸 넘겨줘야해서 무지 귀찮다. 그래서 이렇게 앱 전체에서 사용할 수 있는 context 를 만들어두면 편하다. 인터넷을 돌아다니며 memory leak이 없는 코드를 찾아내서 이렇게 사용하고 있다.
public class App extends Application { private static App instance; public static App instance() { return instance; } @Override public void onCreate() { super.onCreate(); instance = this; } public Context context() { return getApplicationContext(); } }
코틀린에서는 나중에 더 좋은 방법이 나오면 그걸로 바꾸기로하고 일단 이렇게 쓰면 될 것 같다.
class App : Application() { init { instance = this } companion object { private var instance: App? = null fun context() : Context { return instance!!.applicationContext } } }
이렇게도 가능하다(출처: https://antonioleiva.com/objects-kotlin/)
class App : Application() { companion object { lateinit var instance: App private set } override fun onCreate() { super.onCreate() instance = this } val context get() = applicationContext }