gpt4 book ai didi

java - 如何使用后台运行的计数器的当前值更新 Activity 的 TextView?

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

我有一个计数器,每 1 秒显示增加 1它在 TextView 中的当前值。

一切正常,直到 Activity 被销毁然后重新创建。在这些情况下,计数器重置为 0。

我已经读到我必须将计数器的代码放入其中自定义服务,因此它在后台执行。然后,我应该传达我的 Activity (其中包含TextView)与 BroadcastServicer

我已经学习了一些关于 BroadcastReceiver 的教程但我仍然不知道如何解决这个问题。

你能告诉我正确的方法吗将 BroadCastReceiver 与服务进行通信为了更新Activity内的TextView?。

这是迄今为止我的 Activity 代码:

public class CounterActivity extends Activity{
private long startTime = 0;
private Handler h = new Handler();
private TextView tvCounter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_task_list);
tvCounter = (TextView)findViewById(R.id.tvCounter);

Runnable run = new Runnable() {

@Override
public void run() {
long millis = System.currentTimeMillis() - startTime;
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds = seconds % 60;

tvCounter.setText(String.format("%d:%02d", minutes, seconds));

h.postDelayed(this, 500);
}
};

startTime = System.currentTimeMillis();
h.postDelayed(run, 0);
}

}

提前致谢!

最佳答案

你可以使用下面的代码保存你的startTime,然后计数器就不会重置~

protected void onSaveInstanceState(Bundle icicle) {
super.onSaveInstanceState(icicle);
icicle.putLong("starttime", startTime);
}

public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null){
startTime = savedInstanceState.getLong("starttime");
}else{
startTime = System.currentTimeMillis();
}
}

关于java - 如何使用后台运行的计数器的当前值更新 Activity 的 TextView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16473588/

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