2015-03-13 3 views
0

Я хочу, чтобы пользователь нажал кнопку, запустите службу. Когда начинается сервис. Я хочу показать 5 раз текст Время задержки 3 секунды.показать несколько Тостов с задержкой в ​​обслуживании

 show_toast1-------delay 3secounds , 
     show_toast2-------delay 3secounds, 
     show_toast3-------delay 3secounds,....... 

но при нажатии на кнопку Задержка только происходит один раз! и другие show_toast отображается без задержки

код Java:

public class MyService extends Service { 


@Override 
public IBinder onBind(Intent intent) { 
    // TODO Auto-generated method stub 
    return null; 
} 

@Override 
    public void onCreate() { 
     super.onCreate(); 

     for(int i=0;i<4;i++) 
     { 
      try { 
       Toast.makeText(getBaseContext(), "show_toast"+i, Toast.LENGTH_LONG).show(); 
       Thread.sleep(5000); 
      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
     } 



    } 
@Override 
public int onStartCommand(Intent intent, int flags, int startId) { 
    // TODO Auto-generated method stub 


    return START_STICKY; 


} 

ответ

0

Использование обработчика вместо этого, если Thread.sleep(), попробуйте следующий код будет работать для вас.

public Handler handler; //global 
int i = 0;    //global 

final Handler handler = new Handler(); 

    runable = new Runnable() { 
     @Override 
     public void run() { 
      try{ 
       //do your code here 
       if(i < 4){ 
        Toast.makeText(MainActivity.this, "show_toast"+i, Toast.LENGTH_LONG).show(); 
        i = i + 1; 
        //also call the same runnable 
        handler.postDelayed(this, 5000); 
       } 
       else{ 
        handler.removeCallbacks(runable); 
       } 
      } 
      catch (Exception e) { 
       // TODO: handle exception 
      } 

     } 
    }; 
    handler.postDelayed(runable, 5000); 
Смежные вопросы