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