2012-03-31 22 views

答えて

8

私は、UIスレッド上で待機しないことをお勧め。

タスクにはHandlerを使用できます。 runメソッドは、Handlerが作成された同じスレッドで実行されます。

//delay in ms 
    int DELAY = 1000; 

    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() {    
     @Override 
     public void run() { 
      Intent intent = new Intent(CurrentActivity.this, NextActivity.class); 
      startActivity(intent);     
     } 
    }, DELAY); 
+0

私は何か似たようなことをしましたが、私はそれが "遅れて何かをしたい"ところで、クラスを呼び出そうとすると好きではありません。 インテントnewClass =新しいインテント(this、ClassName.class); this.startActivity(newClass); – user1274830

+0

this.startActivity(..)を呼び出さないでください。これを省略してstartActivity(..)を呼び出してください。 – thaussma

+0

Elipseはこのコード行を好きではありません - Intentクラス= new Intent(this、Failed.class); - それは私がそれを作ることを望んでいる - インテントクラス=新しいインテント(); - しかし、それはどんなクラスになるのか分からない。非常にイライラ。 – user1274830

-1

この遅延中にUIが何かを行う必要がありますか?そうでない場合は、ボタンのハンドラー内で

Thread.sleep(timeToWaitInMilliseconds); 

を使用することができます。これによりUIスレッドは数秒間停止しますが、遅延中にUIが「フリーズ」します。

若干優れた選択肢は、新しいスレッドであるAsyncTaskとHandlerを使用して、新しいアクティビティの開始を遅延させてからそのハンドラで新しいアクティビティを開く時間にそのスレッドをスリープさせることです。

asynctaskは、ユーザーが「遅延」中にUIとやりとりすることができるように、あなたのケースでは少し良いと思っています。ここAsyncTasks上

さらに詳しい情報:

http://developer.android.com/reference/android/os/AsyncTask.html

+0

私はあなたの提案を試みました。ボタンをクリックすると、レイアウトを表示するよう求められます。 5,000ミリ秒の遅延を求めて、新しい活動に行きます。 何らかの理由で5秒間遅れていて、レイアウトを1秒間点滅してから新しいアクティビティに移動しています。 – user1274830

関連する問題