Я реализовал обработчик, который позволяет пользователю запускать событие, которое повторяется каждые 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
@portsample: переместить оба обработчика обработчика обработчика = новый обработчик(); таймер t = новый таймер(); 'строки вне метода' onOptionsItemSelected' –