2015-06-25 25 views
10

Tôi mới phát triển Android và hiện hoạt động trình khởi chạy chỉ hiển thị 5 giây và sau đó tôi muốn kiểm tra người dùng đã đăng nhập hay không hoạt động và thực hiện các thao tác.Thực hiện chức năng sau 5 giây trong Android

đây là mã của tôi.

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

    exactPreferences = getSharedPreferences("ExactPreference",MODE_PRIVATE); 
    setContentView(R.layout.activity_landing_page); 

    session = exactPreferences.getString(Model.getSingleton().SHARED_SESSION_ID,null); 
    Log.i("Session Id",session); 
     displayData(); // I want to perform this function after 5 seconds. 
} 


private void displayData() { 
    if(session.equals("")){ 
     Intent loginIntent = new Intent(LandingPage.this, 
       LoginActivity.class); 
     startActivity(loginIntent); 
     Log.i("User Logged In", "False"); 
    } 
    else 
    { 
     Intent objIntent = new Intent(LandingPage.this, 
       IndexPageActivity.class); 
     startActivity(objIntent); 
     Log.i("User Logged In", "True"); 
    } 

} 
+0

Sử dụng một CountDownTimer. –

+2

Sử dụng Trình xử lý PostDelayed – Madhu

+0

http://stackoverflow.com/questions/11434056/how-to-run-a-method-every-x-seconds –

Trả lời

35

Bạn có thể sử dụng Trình xử lý để thêm chút độ trễ.Có thể thực hiện phương thức displayData() như sau để thực hiện sau 5 giây.

new Handler().postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      displayData(); 
     } 
    }, 5000); 

Lưu ý: Không sử dụng các chủ đề như Thread.sleep(5000); vì nó sẽ chặn UI của bạn và và làm cho nó irresponsive.

+0

cảm ơn dude, Hoạt động tốt của nó ,,,, – Jishad

+0

cũng loại bỏ runnable onPause() và thêm runnable onResume(). – NullByte

1

Sử dụng một CountDownTimer

// There's a TextView txtCount in Main Activity 

final int secs = 5; 
new CountDownTimer((secs +1) * 1000, 1000) // Wait 5 secs, tick every 1 sec 
{ 
    @Override 
    public final void onTick(final long millisUntilFinished) 
    { 
     txtCount.setText("" + (int) (millisUntilFinished * .001f)); 
    } 
    @Override 
    public final void onFinish() 
    { 
     txtCount.setText("GO!"); 
     finish(); 
     // Time's up - Start the Login Activity 
     final Intent tnt = 
      new Intent(getApplicationContext(), LoginActivity.class); 
     startActivity(tnt); 
    } 
}.start(); 
1

Hãy thử điều này, mã tạo CountDownTimer với một đánh dấu

timer = new CountDownTimer(5000, 5000) 
{ 
    public void onTick(long millisUntilFinished) 
    { 
    } 

    public void onFinish() 
    { 
     displayData(); 
    } 
}; 
timer.start(); 
2

Gán millisDelayTime biến với mili giây mà bạn mong muốn để gây ra một sự chậm trễ. mActivity là một đối tượng của Hoạt động để cung cấp Ngữ cảnh ứng dụng. Trong trường hợp của bạn millisDelayTime nên được khởi tạo với 5000

mActivity.runOnUiThread(new Runnable() { 
@Override 
    public void run() { 
    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      //your code here 
     } 
    }, millisDelayTime); 
    } 
}); 
1

Các lựa chọn tốt nhất để đạt được điều này là sử dụng một Handler:

int TIME = 5000; //5000 ms (5 Seconds) 

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

       function(); //call function! 

      } 
     }, TIME); 
2
int delay = 1000; 
        int period = 50000; 
        Timer task = new Timer(); 
        task.scheduleAtFixedRate(new TimerTask() { 
         @Override 
         public void run() { 
          getDriver(sessionManager.getKEY(), ride_id); 
         } 
        }, delay, period); 
Các vấn đề liên quan