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

BroadcastReceiver 사용법에 대해 질문있어요.알람관련

0 추천

(하드코딩 주의)

앱으로  알람&스케쥴 관련 작업을 하고있어요

특정시간이 되면 어떤 작업을 시키고 싶어서 브로드캐스트와 알람매니저(AlarmManager)를 이용하였습니다.

 

그래서 MainActivity - onCreate함수 안에 

work_schedule()를 만들어서 알람매니저와 브로드캐스트를 달아줫어요.

 

public void work_schedule(){
    Log.i("work_schedule1" , "work_schedule1");
    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);

    Intent receiverIntent = new Intent(MainActivity.this, CloneReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, receiverIntent, 0);

    int hour = 20;
    int minute = 46;

    Calendar calendar = Calendar.getInstance();
    //calendar.set(year, month - 1, day, hour, minute);
    calendar.set(Calendar.HOUR_OF_DAY , hour);
    calendar.set(Calendar.MINUTE , minute);

    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);

}

위 시간이 되면 브로드캐스트에서 해야할일을 호출합니다.(CloneReceiver.class)

 

1.여기서 문제가 폰을 껏다키면 앱을 다시 실행해야하는 문제가생겻어요 ㅠㅠ

2.그래서 BootReciever 클래스를 추가하여

<receiver android:enabled="true" android:exported="false" android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

 

폰이 껏다 켜질때, BootReceiver 클래스에서 work_schedule를 호출해주기로 했습니다.

 

 

여기서 제가 기본적인 지식이 없어서 헷갈리는부분이 있는데

핸드폰이 켜질때 work_schedule()를 한번 호출하고

oncreate에서 work_schedule()를 한번 호출하면

총 두번 alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent); 함수를 호출하는데 

 

그러면 CloneReceiver 클래스에서2번 작업을 하게 되는지 궁금합니다..

 

테스트를 할려고하는데 먼가 잘안되고 ㅠㅠ 실력이 없다보니 ㅠㅠ

 

결론적으로는 

앱을 재실행하든, 폰을 껏다 키든, 특정 시간에 맞춰 어떤 작업을 할수있게끔 하고싶은데

위 방법처럼 하면 그 '어떤작업'을 두번 실행하게되는것인지??ㅠㅠ 

 

그렇다면 해결방법은 무엇인지 알려주시면 정말감사하겠습니다 ㅠㅠ

 

 

 

뇽뇽이2841 (1,120 포인트) 님이 2017년 12월 17일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...