gpt4 book ai didi

java - setText ("test") 正在卡住 UI

转载 作者:行者123 更新时间:2023-12-01 14:52:18 25 4
gpt4 key购买 nike

我听不懂

我有一个后台线程,它获取 CPU 负载,然后将其设置为 TextView

问题是当执行 setText() 方法时 UI 卡住一秒钟,当滚动浏览 ui 的其他元素时我可以感觉到

Runnable runnable = new Runnable() {
@Override
public void run() {
while(thread) {
try {
RandomAccessFile reader = new RandomAccessFile("/proc/stat", "r");
String load = reader.readLine();

String[] toks = load.split(" ");

long idle1 = Long.parseLong(toks[5]);
long cpu1 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);

try {
Thread.sleep(360);
} catch (Exception e) {
}

reader.seek(0);
load = reader.readLine();
reader.close();

toks = load.split(" ");

long idle2 = Long.parseLong(toks[5]);
long cpu2 = Long.parseLong(toks[2]) + Long.parseLong(toks[3]) + Long.parseLong(toks[4])
+ Long.parseLong(toks[6]) + Long.parseLong(toks[7]) + Long.parseLong(toks[8]);

fLoad = (float)(cpu2 - cpu1) / ((cpu2 + idle2) - (cpu1 + idle1));

} catch (IOException ex) {
}
final int load =(int) (fLoad*100);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
mHandler.post(new Runnable() {
@Override
public void run() {

setCpuLoad(load);
}
});
}
}
};
new Thread(runnable).start();
}

.

 private final void setCpuLoad(int load){
cpuLoad.setProgress(load);
cpuLoadTxt.setText(load+"%");
}

我尝试了很多东西,最终发现问题出在 setText() 中,因为当我评论它时,UI 很流畅

最佳答案

检查您在哪个线程中创建处理程序。您应该在主(UI)线程上执行此操作。

关于java - setText ("test") 正在卡住 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14710458/

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