30/09/2018, 19:23

[ Android] Làm sao để sleep một Service

em có đề bài là có một button khi click thì sẽ tạo một service và cứ 5s thì hiện Toast là " sleep 5s" . Em dùng
new Thread( new Runnable({
@Overide
public void run(){
Thread.sleep(5000);
Toast.makeText(getBaseContext(),“sleep 5s”,Toast.LENGTH_LONG).show();
}
})).start();
trong hàm onCommand nhưng nó cũng ko hiện toast và không sleep

Võ Anh Kiệt viết 21:29 ngày 30/09/2018

bạn đã start service đó lên chưa ?

nghiatdph03905 viết 21:35 ngày 30/09/2018

rồi ạ
/////////////////////

Vu Duy viết 21:35 ngày 30/09/2018

Android có một thread chính gọi là UI thread (hoặc là Main thread) chịu trách nhiệm trong việc thay đổi giao diện, tức là nếu bạn muốn có một thay đổi nào đó trong giao diện (hiện Toast chẳng hạn) thì bạn chỉ được làm trong UI thread.
Về đoạn code của bạn thì bạn đang muốn tạo Toast trong một thread khác nên đó là lý do Toast không hiện. Mình khuyên bạn nên dùng ASyncTask để thực hiện việc này thay vì Thread, bạn có thể google tại sao lại dùng ASyncTask thay vì Thread nhé
Bạn tham khảo thêm ở đây:
http://developer.android.com/intl/vi/reference/android/os/AsyncTask.html
Override lại onProgressUpdate(Progress...) để hiện Toast mà bạn muốn nhé

X viết 21:30 ngày 30/09/2018

Có nhiều cách.

  • Dùng ScheduledExecutorService.
  • Dùng Timer/CountDownTimer
  • Dùng Service + handler rồi toast trên UI thread

v.v…

Bài liên quan
0