活动onStart()操作导致黑屏

时间:2018-10-22 05:38:00

标签: android android-activity thread-sleep activity-lifecycle onstart

我正在尝试在活动显示时自动启动一个简单的计时器。当前,在完成我的操作之前,该活动不会明显可见。我应该覆盖其他方法吗?

@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());
        }
    }
}

3 个答案:

答案 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}}循环。

看看 How to set a Timer in Java?

答案 2 :(得分:1)

当活动在onStart()中运行时,您可能会看到布局的一部分,而不是全部布局。 也许您可以重写onWindowFocusChanged()方法,然后启动一个Thread。 以及为什么在onStart()中使用'super.onResume()'?我不明白:)