마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

notification을 handler로 여러개 띄우기

0 추천

제가 알람 어플을 만들어보고있는 중입니다.

해당 시간이 되면 notification으로 팝업이 뜨게했는데요

팝업한개로는 휴대폰을 확인 못 할 수도있어서 5초간격으로 여러개를 띄우려고하는데 잘 안되네요..

Handler mHandler1 = new Handler();
mHandler1.postDelayed(new Runnable()
{
    public void run()
    {
        notificationManager.notify(12, builder.build());  // 알림 띄우기

    }
}, 5000); // 5초후
mHandler1.postDelayed(new Runnable()
{
    public void run()
    {
        notificationManager.notify(412, builder.build()); // 알림 띄우기

    }
}, 5000); // 5초후
mHandler1.postDelayed(new Runnable()
{
    public void run()
    {
        notificationManager.notify(1232, builder.build()); // 알림 띄우기

    }
}, 5000); // 5초후

이런식으로 했는데 첫번째 팝업이 뜬 후 5초후에 나머지 3개가 동시네 뜨네요 ㅠㅠ 해결방법좀 알려주세요!

 

호잇1 (130 포인트) 님이 2021년 8월 1일 질문
질문에는 벗어난 이야기인데, 5초마다 노티피케이션을 주게 되면 사용자가 굉장히 짜증을 낼 수도 있을 것 같은데요. 해당 기능을 디폴트로 하지 마시고 옵션 같은 걸로 해서 사용자가 선택할 수 있게 하시면 좋은 것 같은데요.
이 어플은 그냥 저혼자 개인적으로 쓰는거라서요 ㅎㅎ

좋은의견 감사합니다^^

1개의 답변

+1 추천

Handler를 3번 동시에 호출하셨네요. 모두 비동기로 실행되니까 결과적으로 Handler가 3번 똑같이 5초 후에 동작을 할 것 같네요.  Handler를 사용할 거면 첫번째 Handler에서 5초 후에 메세지를 받으면, 두번째 notification을, 다시 기다렸다 두번째가 완료되었다는 메세지가 들어오면, 세번째 notifcation을 보내셔야 할 것 같아요. Timer나 Sheduler 등으로 Scheduling을 하셔야 할 것 같은데요. 가장 단순하게는 아래처럼도 할 수 있을 것 같긴한데요.

private void pushDelayedNotification(int interval) {
   mHandler1.postDelayed(new Runnable() {
      public void run() {
         notificationManager.notify(12, builder.build());

      }
   }, interval);
}

private static final int PUSH_INTERVAL = 5000

pushDelayedNotification(PUSH_INTERVAL*1)
pushDelayedNotification(PUSH_INTERVAL*2)
pushDelayedNotification(PUSH_INTERVAL*3)

처럼 하면 될 것 같아 보이기는 한데, 어떤지 잘 모르겠네요.

spark (230,170 포인트) 님이 2021년 8월 1일 답변
제가 인터벌 변수를 잘못이해하고있었네요 감사합니다!
덕분에 해결했습니다
...