2011-02-10 2 views
9

ボタンを押していくうちに新しいアクティビティを開始する必要があります。 これを実行することは可能ですか?手順は何ですか?アンドロイドのボタンを押した後、少し遅れて別のアクティビティを開始するにはどうすればいいですか?

+0

マインドのこの作品を試してみてください。この例では、誰もがお役に立てば幸いですか!私はこれを仕事のための古いプロジェクトに書かれていることに気付きましたが、なぜ彼らがこれを行うことを選んだのか分かりません。 – AdamMc331

答えて

10

HandlerのpostDelayed()メソッドを使用してRunnableを呼び出すことができます。右の最初の頃にそれを取得するため@madする

private Handler mHandler = new Handler(); 

... 

OnClickListener mStartListener = new OnClickListener() { 
    public void onClick(View v) { 
      mHandler.postDelayed(mUpdateTimeTask, 100); 
    } 
}; 

private Runnable mUpdateTimeTask = new Runnable() { 
    public void run() { 
     // do what you need to do here after the delay 
    } 
}; 

小道具:ここ

は、例えば、(http://developer.android.com/resources/articles/timed-ui-updates.html)です。

4

Viewの方法postDelayed(Runnable action, long delayMillis)を使用して、メッセージキューにRunnableを追加して、(おおよその)遅延後に実行することができます。

+0

これにより、UIスレッドをブロックすることなく、目的の動作が可能になります。 –

28

アクティビティを起動する実行可能ファイルとともにpostDelayed()呼び出しを使用します。 サンプルコードは、このインターフェイスが反応残ることができますことを

//will care for all posts 
    Handler mHandler = new Handler(); 

    //the button's onclick method 
    onClick(...) 
    { 
     mHandler.postDelayed(mLaunchTask,MYDELAYTIME); 
    } 

    //will launch the activity 
    private Runnable mLaunchTask = new Runnable() { 
     public void run() { 
      Intent i = new Intent(getApplicationContext(),MYACTIVITY.CLASS); 
      startActivity(i); 
     } 
    }; 

注意である可能性があります。その後、ボタンからonclickリスナーを削除してください。

11

は、このコード

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      final Intent mainIntent = new Intent(CurrentActivity.this, SecondActivity.class); 
      LaunchActivity.this.startActivity(mainIntent); 
      LaunchActivity.this.finish(); 
     } 
    }, 4000); 
0

を使用してアプリのプロセスが殺されたりされていない時はいつでもたまに、uがそれを行う必要があります。その場合、プロセス内で実行可能なrunnableまたはメッセージを使用することはできません。この場合は、AlarmManagerを使用するだけです。あなたが遅延を必要と感じた理由は、私が頼めば

Intent intent = new Intent(); 
... 

PendingIntent pendingIntent = PendingIntent.getActivity(<your context>, 0, intent, PendingIntent.FLAG_ONE_SHOT); 
AlarmManager mgr = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
mgr.set(AlarmManager.RTC, <your delay>, pendingIntent); 
0
runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      new Handler().postDelayed(new Runnable(){ 
       @Override 
       public void run() { 
        Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
        startActivity(intent); 
       } 
      }, 4000); 
     } 
    }); 
0

コード

new Timer().schedule(new TimerTask() {   
    @Override 
    public void run() { 

     // run AsyncTask here.  


    } 
}, 3000); 
関連する問題