我会使用处理程序.
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对不同的事件做出反应.
编辑:通常,我会将常量和Handler作为成员,并在onResume(){}中将regularHandler.sendEmptyMessageDelayed(…)放置在类中
我也将其放在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中,则当您的Activity不在前台时,处理程序将继续循环.您需要使循环在回到前台时再次启用(因此onResume()).