gpt4 book ai didi

android - 在资源方面,是否可以使用来自 context.getString() 的字符串进行无限循环刷新 TextView(每 n 秒)?

转载 作者:行者123 更新时间:2023-12-02 13:16:43 25 4
gpt4 key购买 nike

所以,我有这个功能:

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))
}
基本上,我使用此函数每隔一秒循环一次以使用 DateUtils.getRelativeTimeSpanString() 刷新“timeCreatedTextView”,这在 RecyclerView 行中使用最多,因此多个无限循环将在后台的协程上运行。
我的问题是,我正在做的任何事情是否会导致内存泄漏或高内存使用率,因为我使用 DateUtils 来获取相对时间,或者无论 View 在屏幕上显示多长时间,每隔一秒进行一次字符串格式化?

最佳答案

您正在创建自定义 CoroutineScope .这很好,但是您的工作是指示何时不再需要该范围,因此它会停止运行您的无限循环协程。现在,您似乎没有这样做。
更好的解决方案是使用 CoroutineScope与 UI 的生命周期相关。由于您使用的是 DialogFragment , viewLifecycleScope Fragment 上的扩展属性将是一个可能的选择。然后,当 fragment 被销毁时,您的协程将被清理。您可以直接使用该范围,或者您仍然可以创建自己的自定义范围,但使用 viewLifecycleScope作为父级,因此您可以控制单个计时器(如果不再需要它们,则取消它们)同时仍然获得生命周期意识。

关于android - 在资源方面,是否可以使用来自 context.getString() 的字符串进行无限循环刷新 TextView(每 n 秒)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62894997/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com