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()'?我不明白:)