gpt4 book ai didi

java - 更快地启动对象并更快地更新 Textview

转载 作者:行者123 更新时间:2023-12-03 11:18:03 26 4
gpt4 key购买 nike

我想创建多个计时器。
我在 ArrayList 中初始化它在 MainActivity .然后将它们添加到 ReyclerView以便它们也显示出来。首先,我通过一个 for 循环并执行 startTimer ()每个单独对象的方法。
不幸的是,并非每个计时器的时间都是正确的。这意味着一个计时器更快,第二个更慢,依此类推。所以每个计时器在不同的时间开始,或者文本在不同的时间改变。
我现在的问题是,是否有其他方法可以启动计时器并更改 TextView 中的文本,以便 GUI 更新得更快并且程序本身运行得更快?
目标应该是所有计时器都同样快并且没有延迟。提前致谢。期待解答!
主要 Activity

     timerList= new ArrayList<>();
for (int i = 1; i <= 10; i++) {
timerList.add(new Timer(i, 600000 * i))); //
Each timer has a different time
}

recyclerView.setLayoutManager(recyclerViewLayoutManager);
adapter = new TimerAdapter(this, timerList);

recyclerView.setAdapter(adapter);
context = this;


button_start.setOnClickListener(v -> {

for (Timer timer: timerList) {
timer.startTimer();


});

@Override
public void updateMyText(int index, long time) {
timerList.get(index-1).setTime(time);
adapter.notifyDataSetChanged();
}
定时器
public interface MyCallback {
public void updateMyText(int index, long time);
}
public Timer(int index, long startTimeMilliseconds) {
this.index = index;
this.time = startTimeMilliseconds;
mTimeLeftInMillis = startTimeMilliseconds;
startTime = startTimeMilliseconds;
}



public void startTimer() {
mCountDownTimer = new CountDownTimer(mTimeLeftInMillis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
mTimerRunning = false;
}
}.start();
mTimerRunning = true;
}

public void resetTimer() {
mCountDownTimer.cancel();
mTimerRunning = false;
mTimeLeftInMillis = startTime;
timeLeftFormatted = formattedTime(startTime);
changeText(index-1);
}

public void updateCountDownText() {
//MainActivity.timerList.get(getIndex()-1).setTime(mTimeLeftInMillis);
//MainActivity.adapter.notifyDataSetChanged();
if(myCallback != null) {
myCallback.updateMyText(getIndex(), mTimeLeftInMillis);
}
}

最佳答案

使用实时数据和绑定(bind)或 MVVM 设计模式。您不必担心 View 的更快更新操作。

关于java - 更快地启动对象并更快地更新 Textview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63265958/

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