2

특정 순간에 데이터베이스 작업을 수행하고 브로드 캐스트 수신기와 함께 경보 관리자와 보류중인 의도를 사용하려고합니다.여러 개의 의도가 있지만 브로드 캐스트 수신기는 한 번만 호출됩니다.

동일한 브로드 캐스트 리시버가 짧은 시간 내에 수신해야하는 인 텐트가 여러 개있는 경우 (예 : 1 분 이내에) onreceive()는 한 번만 호출됩니다.

Intent intent2 = new Intent(this, CustomBroadcastReceiver.class); 
    intent2.putExtra("taskId", currentTask.getTaskId()); 
    PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, 0, intent2, PendingIntent.FLAG_UPDATE_CURRENT); 
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 
      ((long) dataSource.fetchTask(task.getTaskId()).getTaskTime() * 60 * 1000), pendingIntent1); 

와 브로드 캐스트 리시버의 onreceive 방법 : 내가 잘못 뭘하는지에

@Override 
public void onReceive(Context context, Intent intent) { 
    dataSource = new DataSourceClass(context); 
    dataSource.open(); 

    int taskId = intent.getIntExtra("taskId", 0); 

    dataSource.setTaskStatus(3, taskId); 
    dataSource.setCatInActive(dataSource.fetchTask(taskId).getTaskCategory()) 
} 

어떤 제안? 일명 (

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { 
     alarmManager.setExact(AlarmManager.RTC, cal.getTimeInMillis(), pendingIntent); 
    } else { 
     alarmManager.set(AlarmManager.RTC, cal.getTimeInMillis(), pendingIntent); 
    } 

getBroadcast()의 두 번째 매개 변수는, 그것이 ID 인 것처럼 작동하는 requestCode가, 그래서 각 PendingIntent는 고유 requestCode가 있어야한다 :

답변

2

대신 set() 당신은 KITKAT 후 setExact()을 사용할 수 있습니다 신분증). 에

int i = sharedPrefs.getInt("i", 0); 

    Intent intent2 = new Intent(this, CustomBroadcastReceiver.class); 
    intent2.putExtra("taskId", currentTask.getTaskId()); 
    PendingIntent pendingIntent1 = PendingIntent.getBroadcast(this, i++, intent2, PendingIntent.FLAG_UPDATE_CURRENT); 
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 
      ((long) dataSource.fetchTask(task.getTaskId()).getTaskTime() * 60 * 1000), pendingIntent1); 

    sharedPrefs.edit.putInt("i", i).apply(); 
+0

스팟 : 모든 pendingIntent1 's은 (는) 그 문제의 원인이지만,이 같은 각 pendingIntent에 대한 diffrent requestCode가 설정할 수 있습니다 될 수있는 거라면 (0), 잘 모르겠어요 같은 requestCode가있다 이것이 바로 문제였습니다. 고마워요! – user5102612

+0

내 기쁨! :삼 –

관련 문제