Activity onStart() 操作导致黑屏
Activity onStart() operation results in a blank screen
我试图在 activity 出现时自动启动一个简单的计时器。目前,activity 在我的操作完成之前不会加载。我应该重写另一个方法吗?
@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());
}
}
}
您正在阻塞主线程,改用带 Runnable 的 Handler
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
暂停当前线程以创建计时器是非常糟糕的idea.CheckOut Timer
class 并查看 scheduleAtFixedRate()
中的方法 class 并从 for
循环中提取 ((TextView) findViewById(R.id.timer))
。
看看
How to set a Timer in Java?
虽然 activity 运行 在 onStart() 中,您可能会看到部分布局,而不是全部布局。
也许你可以覆盖 onWindowFocusChanged() 方法,然后启动一个线程。
为什么在 onStart() 中使用 'super.onResume()'?我不明白:)
我试图在 activity 出现时自动启动一个简单的计时器。目前,activity 在我的操作完成之前不会加载。我应该重写另一个方法吗?
@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());
}
}
}
您正在阻塞主线程,改用带 Runnable 的 Handler
handler = new Handler();
final Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
handler.postDelayed(this, 1000);
}
};
handler.postDelayed(r, 1000);
暂停当前线程以创建计时器是非常糟糕的idea.CheckOut Timer
class 并查看 scheduleAtFixedRate()
中的方法 class 并从 for
循环中提取 ((TextView) findViewById(R.id.timer))
。
看看 How to set a Timer in Java?
虽然 activity 运行 在 onStart() 中,您可能会看到部分布局,而不是全部布局。 也许你可以覆盖 onWindowFocusChanged() 方法,然后启动一个线程。 为什么在 onStart() 中使用 'super.onResume()'?我不明白:)