我已经实现了一个处理程序,允许用户使用任务栏菜单启动每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;
@ρяσѕρєя-k-我已经在上面发布了您实施的建议...我错过了什么?谢谢! – portsample 2015-02-23 05:26:38
@portsample:同时移动'最后的处理程序处理程序=新的处理程序();定时器t =新的定时器();'线外'onOptionsItemSelected'方法 – 2015-02-23 05:29:43