Я бы использовал Обработчик.
private static final int WHAT = 1;
private static final int TIME_TO_WAIT = 5000;
Handler regularHandler = new Handler(new Handler.Callback() {
public boolean handleMessage(Message msg) {
// Do stuff
regularHandler.sendEmptyMessageDelayed(msg.what, TIME_TO_WAIT);
return true;
}
});
regularHandler.sendEmptyMessageDelayed(WHAT, TIME_TO_WAIT);
В качестве примера, это будет "Делать вещи" каждые 5000 миллисекунд.Вы можете заставить обработчик реагировать на разные события, передавая WHAT как другое целое число и обрабатывая его в функции handleMessage.
Редактировать: я бы обычно помещал константы и обработчик в класс в качестве членов, а обычный Handler.sendEmptyMessageDelayed (...) в onResume () {}
Я бы также добавил это в onPause () {}
regularHandler.removeMessages(WHAT)
Edit2: Пример:
public class HomeActivity extends Activity implements OnClickListener {
private static final int WHAT = 1;
private static final int TIME_TO_WAIT = 5000;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textTitle = (TextView) findViewById(R.id.textTitle);
textArtist = (TextView) findViewById(R.id.textArtist);
}
@Override
public void onResume() {
super.onResume();
regularHandler.sendEmptyMessageDelayed(WHAT, TIME_TO_WAIT);
}
@Override
public void onPause() {
super.onPause();
regularHandler.removeMessages(WHAT);
}
Handler regularHandler = new Handler(new Handler.Callback() {
public boolean handleMessage(Message msg) {
// Do stuff
regularHandler.sendEmptyMessageDelayed(msg.what, TIME_TO_WAIT);
return true;
}
});
}
Вам нужно сделать это в onResume () и onPause (), потому что если вы не включите его в onPause, обработчик продолжит цикл, пока ваша активность не будет на переднем плане.Вам нужно будет снова включить цикл, когда он вернется на передний план (следовательно, onResume ()).