0

私はAndriod開発に非常に慣れていません。タイマー (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 を変更しようとしているため、例外であることがわかります。メソッドは、およびrun()によって提供されるバックグラウンド スレッドで実行されます。TimerTimerTask

バックグラウンド スレッドのオーバーヘッドを回避し、問題を解決するため、postDelayed()(a method on View、 your などImageView) を の代わりに使用することをお勧めします。Timer

于 2013-05-26T06:20:33.443 に答える