显示几个Toast延迟服务

时间:2015-03-13 00:22:31

标签: android

我想在用户点击按钮时启动服务。 服务启动时。 我想要显示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;


}

1 个答案:

答案 0 :(得分:0)

如果使用Thread.sleep(),请使用Handler,尝试下面的代码将适合您。

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);