Sobes.tech
Middle

Was ist PendingIntent?

sobes.tech KI

Antwort von AI

Ein PendingIntent ist ein Token, das einer anderen Anwendung die Möglichkeit gibt, einen Teil des Codes im Namen Ihrer Anwendung mit Ihren Berechtigungen auszuführen.

Es wird verwendet für:

  • Benachrichtigungen (Starten einer Aktivität beim Klicken auf die Benachrichtigung).
  • Desktop-Widgets (Verarbeitung von Benutzerklicks).
  • Planungsdienste (wiederkehrende Aufgaben mit AlarmManager).

Hauptunterschiede zu einem normalen Intent:

  • PendingIntent wird an eine andere Anwendung übergeben.
  • PendingIntent behält die Berechtigungen der ursprünglichen Anwendung.

Typen von PendingIntent:

  • getActivity(): Zum Starten einer Activity.
    // Erstellen eines PendingIntent zum Starten einer Activity
    val intent = Intent(context, TargetActivity::class.java)
    val pendingIntent = PendingIntent.getActivity(context, 0, intent, 0)
    
  • getService(): Zum Starten eines Service.
    // Erstellen eines PendingIntent zum Starten eines Service
    val intent = Intent(context, MyService::class.java)
    val pendingIntent = PendingIntent.getService(context, 0, intent, 0)
    
  • getBroadcast(): Zum Senden einer Broadcast-Nachricht.
    // Erstellen eines PendingIntent zum Senden eines Broadcasts
    val intent = Intent("MY_ACTION")
    val pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0)
    

Flags von PendingIntent, die das Verhalten beeinflussen:

Flag Beschreibung
FLAG_ONE_SHOT Der PendingIntent kann nur einmal verwendet werden.
FLAG_NO_CREATE Wenn der PendingIntent nicht existiert, nicht erstellen, null zurückgeben.
FLAG_CANCEL_CURRENT Wenn bereits ein PendingIntent mit demselben Intent existiert, abbrechen und neu erstellen.
FLAG_UPDATE_CURRENT Wenn bereits ein PendingIntent mit demselben Intent existiert, seine Extras aktualisieren.
FLAG_IMMUTABLE Der PendingIntent kann von anderen Anwendungen nicht geändert werden (empfohlen).

Bei Verwendung von PendingIntent ist es wichtig, eindeutige Request-Codes (zweites Argument in den Methoden getActivity, getService, getBroadcast) anzugeben, um sie zu unterscheiden.