Как перестать тратить трансляцию в Android? - PullRequest
0 голосов
/ 23 марта 2019

У меня есть проект Android, который отправляет широковещательную рассылку каждую секунду, и я пытаюсь выяснить, как остановить его после щелчка.

Мой код широковещательной передачи:

Intent broadcastIntent = new Intent ("send broadcast");
sendBroadcast(broadcastIntent);
stoptimertask(); //it is stopping broadcast for a second.

1 Ответ

0 голосов
/ 23 марта 2019

Вы можете определить два метода: один, который запускает Таймер для отправки трансляции каждую секунду, и второй, который останавливает Таймер.

Timer timer;

private void startBroadcastLoop() {
    timer = new Timer();
    timer.schedule(new TimerTask() {

        @Override
        public void run() {
            // Send broadcast
            Intent broadcastIntent = new Intent ("send broadcast");
            sendBroadcast(broadcastIntent);
        }

    },0,1000); // Send broadcast every second
}

private void stopBroadcastLoop() {
    if(timer!=null){
        timer.cancel();
        timer = null;
    }    
}

И затем на вашей кнопке вызовите нужную функцию в соответствии с логическим состоянием:

sendBroadcastBool = false;
button.setOnClickListener(new OnClickListener(){
        public void onClick(View v) {
            // If broadcast not sent yet
            if (!sendBroadcastBool) {
                startBroadcastLoop();
                sendBroadcastBool = true;
            }
            else {
                stopBroadcastLoop();
                sendBroadcastBool = false;
            }
        }
    });

Best

...