【发布时间】:2015-04-24 09:12:36
【问题描述】:
我已经实现了一个处理程序,它允许用户使用任务栏菜单启动一个每 5 秒重复一次的事件。还允许用户从任务栏菜单停止事件的最佳方法是什么?
public class MainActivity extends Activity{
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menuitem_tracklogOn:
final Handler handler = new Handler();
Timer t = new Timer();
t.schedule(new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
//DO SOME ACTIONS HERE , THIS ACTIONS WILL WILL EXECUTE AFTER 5 SECONDS...
handler.postDelayed(this, 5000);//repeat every n-milliseconds
}
});
}
}, 0);//start after n-milliseconds
return true;
case R.id.menuitem_tracklogOff:
//stops running event from R.id.menuitem_tracklogOn
return true;
解决办法:
final Handler handler = new Handler();
Timer t = new Timer();
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menuitem_tracklogOn:
t.schedule(new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
//DO SOME ACTIONS HERE , THIS ACTIONS WILL WILL EXECUTE AFTER 5 SECONDS...
handler.postDelayed(this, 5000);//repeat every n-milliseconds
}
});
}
}, 2000);//start after n-milliseconds
return true;
case R.id.menuitem_tracklogOff:
t.cancel();
handler.removeCallbacksAndMessages(null);
return true;
【问题讨论】:
标签: android timer android-handler