您好我想知道如何让任务执行一段时间并停止它。我尝试过Thread.Sleep()但它没有用。所以基本上我的想法是我想每5秒执行一次任务然后停止重复它。
启动任务 - 创建活动时。
执行任务
等待5秒
再次执行任务
...
活动已结束
任务不再执行。
答案 0 :(得分:1)
你可以试试这个:
Timer timer = new Timer();
TimerTask tt = new TimerTask() {
@Override
public void run() {
yourTaskMethod();
}
};
timer.scheduleAtFixedRate(tt, 0L, 5000L);
更新:
如果你打算在Toast
之类的方法中使用主要元素,或者你应该使用其他东西:
public void yourTaskMethod() {
//simple elements that don't need main thread
int a = b+c;
// for elements that use main thread
runOnUiThread(new Runnable() {
public void run() {
Toast...
}
});
}
答案 1 :(得分:1)
使用TimerTask如下
Timer t = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// Do your stuff
}
});
}
};
t.scheduleAtFixedRate(task, 1000, 5000);
at onDestry
t.cancel()
答案 2 :(得分:0)
如果您只想在活动开放时执行任务,最简单的方法是使用计时器。有关计时器的说明,请参阅here。
答案 3 :(得分:0)
Intent intent = new Intent(this, TestService.class);
PendingIntent pintent = PendingIntent.getService(this, 0, intent, 0);
AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),5000, pintent); // 5000 means 5 second
TestService.java
public class TestService extends Service
{
@Override
public void onCreate()
{
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Service Created", 1).show();
super.onCreate();
}
}
答案 4 :(得分:0)
final Thread myTask = new Thread( new Runnable(){ public void run(){ int count = 0; while(count< = 1){ //做你需要的一切 ... 计数++; System.sleep(5000); // 5秒 } } } )。开始();
答案 5 :(得分:0)
查看有关Alarm Manager的文档 - 这对我帮助很大。
答案 6 :(得分:0)
使用Alarm Manager这是android的标准方式
答案 7 :(得分:0)
使用runnable线程并使用处理程序启动它...由handler.postDelayed(runnable,5 * 1000).... 在runnable ....的run方法中调用相同的语句。