---
page_source: https://docs.juspay.io/upi-inapp/android/interaction-with-sdk/life-cycle-events
page_title: Life Cycle Events
---


## Life Cycle Events



UPI In-app SDK runs in a fragment. Hence, to handle certain events based upon activity life cycle, client will need to forward those events to the SDK.

These events are crucial for seamless functioning of features like OTP reading, App Switches (UPI Intent), Hardware backpress.

Following are the Life cycle events which SDK needs


###   onBackPressed


In order to handle hardware backpress done by user, you have to call `onBackPressed()` on HyperServices Instance in the onBackPressed function of your Checkout Activity.

onBackPressed function returns a boolean. When this return value is true hardware backpressed is consumed by Juspay SDK, if its false you need to handle backpress



#### Code Snippets: -

#### Java Code Snippet:

```java
@Override
  public void onBackPressed() {
      boolean handleBackpress = hyperInstance.handleBackPress();
      if(handleBackpress) {
          super.onBackPressed();
      }
  }
```

#### Kotlin Code Snippet:

```kotlin
override fun onBackPressed() {
        val handleBackpress: Boolean = hyperServicesHolder?.handleBackPress() == true
        if (handleBackpress) {
            super.onBackPressed()
        }
    }
```



###   onActivityResult


In order to handle results of App Switches in cases like UPI Intent transactions, you need to call `super.onActivityResult()` if available, if not you can make same function call on HyperServices Instance.

> **Note**
> This is a conditional step, and is only supposed to be implemented if you are **overriding** onActivityResult.





#### Code Snippets: -

#### Java Code Snippet:

```java
@Override
  public void onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {

    // If super.onActivityResult is available use following:
    super.onActivityResult(requestCode, resultCode, data);

    // In case super.onActivityResult is NOT available please use following:
    if (data != null) {
        hyperServices.onActivityResult(requestCode, resultCode, data);
    }
  }
```

#### Kotlin Code Snippet:

```kotlin
// If super.onActivityResult is available use following:
        super.onActivityResult(requestCode, resultCode, data);

        // In case super.onActivityResult is NOT available please use following:
        if (data != null) {
            hyperServices.onActivityResult(requestCode, resultCode, data);
        }
```



###   onRequestPermissionsResult


In order to handle results of Permission Request results for cases like OTP Reading, you need to call `super.onRequestPermissionsResult()` in your onRequestPermissionsResult lifeCycle hook, if available, if not you can make same function call on HyperServices Instance.

> **Note**
> This is a conditional step, and is only supposed to be implemented if you are **overriding**  onRequestPermissionsResult





#### Code Snippets: -

#### Java Code Snippet:

```java
@Override
  public void onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {

      // If super.onRequestPermissionsResult is available use following:
      super.onRequestPermissionsResult(requestCode, permissions, grantResults);

      // In case super.onActivityResult is NOT available please use following:
      hyperInstance.onRequestPermissionsResult(requestCode, permissions, grantResults);
  }
```

#### Kotlin Code Snippet:

```kotlin
//  If super.onRequestPermissionsResult is available use following:
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        // In case super.onActivityResult is NOT available please use following:
        hyperServices.onRequestPermissionsResult(requestCode, permissions, grantResults);
```
