2016-11-06 2 views
-3

다운 링크하지 마십시오 .. 질문에 명확한 설명이 필요하다고 생각되면 문제를 언급하십시오.브로드 캐스트 수신기가 매번 호출됩니다.

자정에 sqlite 테이블을 업데이트하여 앱을 실행하지 않고 자정에 자동으로 브로드 캐스트 리시버를 호출하려고합니다. 하지만 앱을 시작할 때마다 을 업데이트하고 있습니다.

코드 : -

onCreate()

private void setTheTimeToUpdateTables(Context context) { 

     Log.i("Update table function","Yes"); 

     AlarmManager alarmManager=(AlarmManager) getSystemService(ALARM_SERVICE); 

     Intent alarmIntent=new Intent(context,UpdateTables.class); 

     PendingIntent pendingIntent=PendingIntent.getBroadcast(context,0,alarmIntent,PendingIntent.FLAG_UPDATE_CURRENT); 

     alarmManager.cancel(pendingIntent); 

     Calendar alarmStartTime = Calendar.getInstance(); 

     alarmStartTime.setTimeInMillis(System.currentTimeMillis()); 

     alarmStartTime.set(Calendar.HOUR_OF_DAY, 0); 
     alarmStartTime.set(Calendar.MINUTE, 1); 
     alarmStartTime.set(Calendar.SECOND, 0); 


     System.out.println("Updating table time "+alarmStartTime); 
     System.out.println("Time in millseconds "+alarmStartTime.getTimeInMillis()); 


     alarmManager.setInexactRepeating(AlarmManager.RTC,alarmStartTime.getTimeInMillis(),AlarmManager.INTERVAL_DAY,pendingIntent); 

     Log.d("Alarm","Set for midnight"); 

    } 

공용 클래스 UpdateTables에 mainActivity.java에서 함수를 호출이 브로드 캐스트 리시버를 확장 {

DbHelper dbHelper; 
ArrayList<ListMedicine> reminderInfo; 

@Override 
public void onReceive(Context context, Intent intent) { 

    dbHelper=new DbHelper(context); 
    Log.i("Service Start", CalculateDaysService.TAG); 

    context.startService(new Intent(context,CalculateDaysService.class)); 



    Log.i("Done","Yes"); 
} 
} 

문제 : - 1.이 방송 수신기 앱을 시작할 때마다 매번 호출됩니다. 2. 자정에 전화하지 않습니다.

답변

0

먼저, 시간이 과거 인 Calendar을 만들고 있습니다. 이로 인해 알람이 즉시 트리거됩니다. 시간을 0으로 설정 한 후 하루를 더해야합니다.

두 번째로 setInexactRepeating()은 자정에 트리거하지 않습니다. setExact() 메서드 중 하나를 사용해야하는 것처럼 들리므로 다른 메서드 인 AlarmManager은 물론 해당 메서드에 대한 설명서를 읽는 것이 좋습니다.

+0

만약 내가 정확한 방법을 사용한다면 문서에서 이해할 수있는 것을 한번 불러 줄 것입니다. @ Karakuri –

+0

@AnkurKhandelwal 그래서 다음 깨우기를 예약하기 위해 작업이 완료된 후에'setExact()'를 다시 호출하십시오. – Karakuri

관련 문제