PendingIntent에서 사용되는“requestCode”는 무엇입니까?
배경:
AlarmManager를 통해 알람에 PendingIntent를 사용하고 있습니다.
문제 :
처음에는 이전의 것을 취소하려면 알람을 시작하기 전에 사용했던 정확한 requestCode를 제공해야한다고 생각했습니다.
그러나 취소 API가 말한 것처럼 내가 틀렸다는 것을 알게되었습니다 .
인 텐트가 일치하는 모든 경보를 제거합니다. 의도와 일치하는 모든 유형의 경보 (filterEquals (Intent)로 정의 됨)는 취소됩니다.
" filterEquals "를 보면 문서는 다음과 같이 말합니다.
인 텐트 해결 (필터링)을 위해 두 인 텐트가 동일한 지 확인합니다. 즉, 작업, 데이터, 유형, 클래스 및 범주가 동일한 경우입니다. 이는 인 텐트에 포함 된 추가 데이터를 비교하지 않습니다.
그래서 나는 "requestCode"가 무엇인지 이해하지 못한다.
질문:
"requestCode"는 무엇에 사용됩니까?
동일한 "requestCode"로 여러 알람을 생성하면 어떻게됩니까? 그들은 서로를 무시합니까?
requestCode
나중에 동일한 보류중인 인 텐트 인스턴스를 검색하는 데 사용됩니다 (취소 등).- 네, 내 생각 엔 알람이 서로 무시할 것입니다. 요청 코드를 고유하게 유지합니다.
@Minhaj Arfin 답변에 추가하고 싶습니다.
1- requestCode는 나중에 동일한 보류 인 텐트를 가져 오는 데 사용됩니다 (취소 등).
2- 예, PendingIntent에 지정한 것과 동일한 수신자를 Intent에 지정하는 한 무시됩니다.
예:
Intent startIntent1 = new Intent(context, AlarmReceiverFirst.class);
PendingIntent pendingIntent1 = PendingIntent.getBroadcast(context, 0, startIntent1, 0);
Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0);
위의 예 에서 수신자가 다르기 때문에 서로 덮어 쓰지 않습니다 (AlarmReceiverFirst 및 AlarmReceiverSecond).
Intent startIntent2 = new Intent(context, AlarmReceiverSecond.class);
PendingIntent pendingIntent2 = PendingIntent.getBroadcast(context, 0, startIntent2, 0);
Intent startIntent3 = new Intent(context, AlarmReceiverSecond.class);
PendingIntent pendingIntent3 = PendingIntent.getBroadcast(context, 0, startIntent3, 0);
위의 예에서, 그들은 것이다 서로 겹쳐 수신기가 동일하기 때문에 (AlarmReceiverSecond)
제 경우에는 두 가지 다른 의도로 동일한 활동을 열고 싶습니다. 두 개 이상의 FCMS가 트레이에 있으면 그중 하나는 다른 하나는 열지 않을 것이므로 보류중인 의도의 요청 코드를 변경 한 다음 작동했습니다.
PendingIntent pendingIntent =
PendingIntent.getActivity(this, **Some unique id for all GCMS** /* Request code */, intent,
PendingIntent.FLAG_ONE_SHOT);
requestCode
앱에 심각한 문제를 일으킬 수있는 한 가지 중요한 점은 위젯을 사용할 때입니다. requestCode
동일한 위젯은 전화 재부팅 후 작동하지 않습니다 . 즉, 위젯 pendingIndent
에 설정하는 것은 remoteViews
고유 한 requestCode, 일반적으로 숫자와 함께 제공되는 widgetId로 설정되어야 함을 의미합니다 .
참고 URL : https://stackoverflow.com/questions/21526319/whats-requestcode-used-for-on-pendingintent
'developer tip' 카테고리의 다른 글
Semaphore와 SemaphoreSlim 중에서 어떻게 선택합니까? (0) | 2020.08.24 |
---|---|
C #에서 const 매개 변수가 허용되지 않는 이유는 무엇입니까? (0) | 2020.08.24 |
Android N Java 8 기능 (Jack 컴파일러) 및 Kotlin interop (0) | 2020.08.24 |
QtCreator 프로젝트의 하위 디렉토리를 만드는 방법은 무엇입니까? (0) | 2020.08.24 |
인스턴스 메서드의 Python 데코레이터가 클래스에 액세스 할 수 있습니까? (0) | 2020.08.24 |