private void setupListener() {
    ContentResolver resolver = mContext.getContentResolver();

    mPieTriggerSlots =
        Settings.System.getIntForUser(
            resolver,
            Settings.System.PIE_GRAVITY,
            EdgeGesturePosition.LEFT.FLAG,
            UserHandle.USER_CURRENT);

    int sensitivity = mContext.getResources().getInteger(R.integer.pie_gesture_sensivity);
    if (sensitivity < EdgeServiceConstants.SENSITIVITY_LOWEST
        || sensitivity > EdgeServiceConstants.SENSITIVITY_HIGHEST) {
      sensitivity = EdgeServiceConstants.SENSITIVITY_DEFAULT;
    }

    int flags = mPieTriggerSlots & mPieTriggerMask;

    if (Settings.System.getIntForUser(
            resolver, Settings.System.PIE_IME_CONTROL, 1, UserHandle.USER_CURRENT)
        == 1) {
      flags |= EdgeServiceConstants.IME_CONTROL;
    }

    mPieManager.updateEdgeGestureActivationListener(
        mPieActivationListener, sensitivity << EdgeServiceConstants.SENSITIVITY_SHIFT | flags);
  }
  public void detachContainer(boolean onExit) {
    if (mPieContainer == null || !mAttached) {
      return;
    }
    if (isShowing() && !onExit) {
      mIsDetaching = true;
      return;
    }
    mIsDetaching = false;
    mAttached = false;

    mPieManager.updateEdgeGestureActivationListener(mPieActivationListener, 0);

    if (mTelephonyManager != null) {
      mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_NONE);
    }

    mContext.getContentResolver().unregisterContentObserver(mSettingsObserver);

    mContext.unregisterReceiver(mBroadcastReceiver);

    mPieContainer.clearSlices();
    mPieContainer = null;
  }