0

我对 Andriod 开发非常陌生。我正在尝试使用 Timer(来自 java.util)在 1 秒后删除视图onCreate,这就是我写的。

Timer timer;

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        timer = new Timer();
        timer.schedule(new TimerTask() {
              @Override
              public void run() {
                  ImageView startup = (ImageView) findViewById(R.id.startup);
                  startup.setVisibility(View.GONE);
              }
            }, 1000);
}

不完全确定为什么,但我的应用程序每次都会崩溃。

计时器似乎有问题。我试过删除计时器并startup.setVisibility(View.GONE);进去OnCreatee,它工作正常。

    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            setContentView(R.layout.activity_main);

            ImageView startup = (ImageView) findViewById(R.id.startup);
                      startup.setVisibility(View.GONE);

  //Didn't crash at all!!!
}

如果有人可以向我解释为什么我的应用程序在timer使用时崩溃,那就太好了。

4

1 回答 1

3

不完全确定为什么,但我的应用程序每次都会崩溃,除非我删除计时器并立即删除视图。

使用 LogCat 检查与您的崩溃关联的 Java 堆栈跟踪。

您将看到您的异常是因为您试图从后台线程修改 UI。您的方法在andrun()提供的后台线程上运行。TimerTimerTask

我建议使用postDelayed()(a method on View,例如 your ImageView) 而不是Timer,因为这样可以避免后台线程的开销并解决您的问题。

于 2013-05-26T06:20:33.443 回答