В моем приложении для Android мне нужно создать синглтон с параметром для класса обслуживания:
class AndroidFileUtil2 private constructor(newContext: Context) {
    init {
        context = newContext
        if (BuildConfig.DEBUG)
            Log.d(TAG, "CONSTRUCTOR: context = $context")
    }
    companion object {
        private var instance: AndroidFileUtil2? = null
        private lateinit var context: Context
        private val TAG = AndroidFileUtil2::class.java.name
        @Synchronized
        fun getInstance(context: Context): AndroidFileUtil2 {
            if (instance == null) {
                instance = AndroidFileUtil2(context)
            }
            return instance as AndroidFileUtil2
        }
        fun getTest() {
            if (BuildConfig.DEBUG)
                Log.d(TAG, "getTest(): context_cacheDir = ${context.cacheDir}")
        }
    }
}
и используйте вот так:
class Main : Application() {
  override fun onCreate() {
      super.onCreate()
      AndroidFileUtil2.getInstance(appContext)
      AndroidFileUtil2.getTest()
    }
}
Работает нормально.  Когда я вызываю AndroidFileUtil2.getTest(), он успешно распечатывает каталог кеша моего приложения.  Smt вот так:
getTest(): context_cacheDir = /data/user/0/com.myproject.client.debug/cache
Хороший.
Но в IDE я получаю такое предупреждение:
Do not place Android context classes in static fields. This is a memory leak
в этой строке:
private lateinit var context: Context
Как исправить это предупреждение в моем одноэлементном классе?
 
                                                                     
                                                                    