Итак, у меня есть эта функция:
inline fun runInLoop(intervalInMillis : Long = 1_000, crossinline function : suspend () -> Unit) {
CoroutineScope(Dispatchers.Main).launch {
while (true) {
function.invoke()
delay(intervalInMillis)
}
}
}
И я использую ее так:
Time.runInLoop(10_000L) {
binding.timeCreatedTextView.text = mContext.getString(R.string.time_created,
Time.unixToRelativeTime(item.timeCreated))
}
В основном, я использую эту функцию для l oop каждую секунду, чтобы refre sh "timeCreatedTextView" с DateUtils.getRelativeTimeSpanString (), и это наиболее часто используется в строках RecyclerView, поэтому несколько бесконечных циклов будут выполняться в сопрограмме в фоновом режиме.
Мой вопрос: все, что я делаю, является потенциальным источником утечек памяти или большого количества использований памяти, поскольку я использую DateUtils для получения относительного времени или выполняю форматирование строк каждую секунду до тех пор, пока отображение отображается на экране?