# LifecycleEventHandler

> Occurs when the Adaptive Performance instance is created or destroyed during lifecycle changes.

## Definition

* **Type:** Event
* **Namespace:** [UnityEngine.AdaptivePerformance](/engine/6000.7/script-reference/unityengine/adaptiveperformance.md)
* **Assembly:** UnityEngine.AdaptivePerformanceModule

```csharp
public static event LifecycleEventHandler LifecycleEventHandler
```

### Remarks

This event fires automatically when the [Holder.Instance](/engine/6000.7/script-reference/unityengine/adaptiveperformance/holder/instance.md) property value changes. A [LifecycleChangeType.Created](/engine/6000.7/script-reference/unityengine/adaptiveperformance/lifecyclechangetype/created.md) event fires when a new [IAdaptivePerformance](/engine/6000.7/script-reference/unityengine/adaptiveperformance/iadaptiveperformance.md) instance is assigned, and a [LifecycleChangeType.Destroyed](/engine/6000.7/script-reference/unityengine/adaptiveperformance/lifecyclechangetype/destroyed.md) event fires when the instance is set to null.

Subscribe to this event to track when Adaptive Performance becomes available or unavailable. Doing so is useful for managing dependent systems or UI state that relies on Adaptive Performance.

The event fires from the [Holder.Instance](/engine/6000.7/script-reference/unityengine/adaptiveperformance/holder/instance.md) property setter, so it occurs during [Holder.Initialize](/engine/6000.7/script-reference/unityengine/adaptiveperformance/holder/initialize.md) and [Holder.Deinitialize](/engine/6000.7/script-reference/unityengine/adaptiveperformance/holder/deinitialize.md) operations.

### Examples

```csharp
using UnityEngine;
using UnityEngine.AdaptivePerformance;

public class AdaptivePerformanceTracker : MonoBehaviour
{
    void Start()
    {
        // Subscribe to lifecycle events.
        Holder.LifecycleEventHandler += OnAdaptivePerformanceLifecycle;
    }

    void OnDestroy()
    {
        // Unsubscribe to prevent memory leaks.
        Holder.LifecycleEventHandler -= OnAdaptivePerformanceLifecycle;
    }

    void OnAdaptivePerformanceLifecycle(IAdaptivePerformance instance, LifecycleChangeType changeType)
    {
        switch (changeType)
        {
            case LifecycleChangeType.Created:
                Debug.Log("Adaptive Performance is now available.");
                break;
            case LifecycleChangeType.Destroyed:
                Debug.Log("Adaptive Performance is no longer available.");
                break;
        }
    }
}
```
