我正在尝试在活动显示时自动启动一个简单的计时器。当前,在完成我的操作之前,该活动不会明显可见。我应该覆盖其他方法吗?
@Override
protected void onStart() {
super.onStart();
for (int i = 0; i <= 100; i++) {
((TextView) findViewById(R.id.timer)).setText(String.valueOf(i));
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
Log.e("timer", e.getMessage());
}
}
}
答案 0 :(得分:1)
您正在阻止主线程,请改用Handler和Runnable
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
答案 1 :(得分:1)
暂停当前线程以创建计时器是一个非常糟糕的主意。检出Timer
类,看看该类中的scheduleAtFixedRate()
方法,然后从{中提取((TextView) findViewById(R.id.timer))
{1}}循环。
答案 2 :(得分:1)
当活动在onStart()中运行时,您可能会看到布局的一部分,而不是全部布局。 也许您可以重写onWindowFocusChanged()方法,然后启动一个Thread。 以及为什么在onStart()中使用'super.onResume()'?我不明白:)