Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1dd4cdf authored by ykhung's avatar ykhung
Browse files

Replace the cached MotionEvent with getX() value to improve GC state

avoid to cache the whole MotionEvent, since it will clone the whole
instance fields again to cause GC triggering, since we only need the
getX() value in the MotionEvent, rather than the whole data

Bug: 195306545
Test: make SettingsRoboTests
Change-Id: Ic3840b0a4eb6587ec229ba3de2c62ec868d1a535
parent 33612098
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -108,7 +108,7 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
    Paint mTrapezoidCurvePaint = null;
    private TrapezoidSlot[] mTrapezoidSlots;
    // Records the location to calculate selected index.
    private MotionEvent mTouchUpEvent;
    private float mTouchUpEventX = Float.MIN_VALUE;
    private BatteryChartView.OnSelectListener mOnSelectListener;

    public BatteryChartView(Context context) {
@@ -255,20 +255,20 @@ public class BatteryChartView extends AppCompatImageView implements View.OnClick
        // Caches the location to calculate selected trapezoid index.
        final int action = event.getAction();
        if (action == MotionEvent.ACTION_UP) {
            mTouchUpEvent = MotionEvent.obtain(event);
            mTouchUpEventX = event.getX();
        } else if (action == MotionEvent.ACTION_CANCEL) {
            mTouchUpEvent = null; // reset
            mTouchUpEventX = Float.MIN_VALUE; // reset
        }
        return super.onTouchEvent(event);
    }

    @Override
    public void onClick(View view) {
        if (mTouchUpEvent == null) {
        if (mTouchUpEventX == Float.MIN_VALUE) {
            Log.w(TAG, "invalid motion event for onClick() callback");
            return;
        }
        final int trapezoidIndex = getTrapezoidIndex(mTouchUpEvent.getX());
        final int trapezoidIndex = getTrapezoidIndex(mTouchUpEventX);
        // Ignores the click event if the level is zero.
        if (trapezoidIndex == SELECTED_INDEX_INVALID
                || !isValidToDraw(trapezoidIndex)) {