2011-11-01 39 views
10

Tôi có một ứng dụng mà tôi nhận được một tin nhắn có chứa vị trí của mình. Khi nhận được tin nhắn, nó gọi một hoạt động khác để bắt đầu và chuyển vị trí đó đến hoạt động đó để vẽ nó trên bản đồ. như thông báo trên màn hình nhưng somehoe do gọi hoạt động thứ hai mà bánh mì nướng không đến up.My câu hỏi là làm thế nào chúng ta có thể trì hoãn việc kêu gọi hoạt động thứ hai từ hoạt động này?Làm thế nào để trì hoãn việc gọi một hoạt động từ một hoạt động khác?

Trả lời

39

Bạn có thể sử dụng một cái gì đó như thế này:

new Handler().postDelayed(new Runnable() { 
         @Override 
         public void run() { 

          Intent i=new Intent(SearxhJobs.this,JobsTypes.class); 
          startActivity(i); 
         } 
        }, 5000); 

Ở đây nó chờ đợi tối đa 5 giây để khởi động hoạt động.

Hy vọng điều này sẽ giúp

2

Tạo AsyncClass làm Thread.sleep() trong phương thức doInBackground(), sau đó điều hướng đến hoạt động mới của bạn trong phương thức onPostExecute() của bạn.

Gọi cho tin nhắn chúc mừng của bạn và sau đó thực thi AsyncClass.

5

Bạn có thể làm điều đó với một Handler như thế này

Handler h = new Handler(){ 
     @Override 
     public void handleMessage(Message msg) { 

      Intent i = new Intent().setClass(ctx, MainActivity.class);     
      startActivity(i); 
     }   
    }; 

    h.sendEmptyMessageDelayed(0, 1500); // 1500 is time in miliseconds 
0

Chỉ cần đặt bố cục!

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 

      setContentView(R.layout.next); //where <next> is you target activity :) 

      } 
     }, 5000); 
1

Hãy thử:

Runnable r = new Runnable() { 
     @Override 
     public void run() { 
      // if you are redirecting from a fragment then use getActivity() as the context. 
      startActivity(new Intent(SplashActivity.this, MainActivity.class)); 
      // To close the CurrentActitity, r.g. SpalshActivity 
      finish(); 
     } 
}; 

Handler h = new Handler(); 
// The Runnable will be executed after the given delay time 
h.postDelayed(r, 1500); // will be delayed for 1.5 seconds 
0

Một ví dụ sẽ là như sau:

Handler TimeDelay=new Handler(); 
       if(previous=="geofence"){ 



        tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null); 
        Runnable r = new Runnable() { 
         @Override 
         public void run() { 
          /* 
          Intent intent = new Intent(
            MyBroadcastMessageReceiver.class.getName()); 
          intent.putExtra("some additional data", choice); 
          someActivity.sendBroadcast(intent);*/ 
          tts.speak(previous,TextToSpeech.QUEUE_ADD,null, null); 
         } 
        }; 
        TimeDelay.postDelayed(r, 150000); 
Các vấn đề liên quan