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

Commit 12e319b7 authored by Erik Wolsheimer's avatar Erik Wolsheimer Committed by android-build-merger
Browse files

Do not listen for clock ticks, time changes, timezone changes, or time format...

Do not listen for clock ticks, time changes, timezone changes, or time format changes when TextClock is not visible am: e12cd3bb
am: 4d855f15

Change-Id: I9bebe0ea19701dcdb924c20534a418f7ad19440a
parents 49eeb668 4d855f15
Loading
Loading
Loading
Loading
+9 −18
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ public class TextClock extends TextView {

    private CharSequence mDescFormat;

    private boolean mAttached;
    private boolean mRegistered;

    private Calendar mTime;
    private String mTimeZone;
@@ -252,7 +252,7 @@ public class TextClock extends TextView {
        }

        createTime(mTimeZone);
        // Wait until onAttachedToWindow() to handle the ticker
        // Wait until registering for events to handle the ticker
        chooseFormat(false);
    }

@@ -503,7 +503,7 @@ public class TextClock extends TextView {
        boolean hadSeconds = mHasSeconds;
        mHasSeconds = DateFormat.hasSeconds(mFormat);

        if (handleTicker && mAttached && hadSeconds != mHasSeconds) {
        if (handleTicker && mRegistered && hadSeconds != mHasSeconds) {
            if (hadSeconds) getHandler().removeCallbacks(mTicker);
            else mTicker.run();
        }
@@ -517,11 +517,9 @@ public class TextClock extends TextView {
    }

    @Override
    protected void onAttachedToWindow() {
        super.onAttachedToWindow();

        if (!mAttached) {
            mAttached = true;
    public void onVisibilityAggregated(boolean isVisible) {
        if (!mRegistered && isVisible) {
            mRegistered = true;

            registerReceiver();
            registerObserver();
@@ -533,20 +531,13 @@ public class TextClock extends TextView {
            } else {
                onTimeChanged();
            }
        }
    }

    @Override
    protected void onDetachedFromWindow() {
        super.onDetachedFromWindow();

        if (mAttached) {
        } else if (mRegistered && !isVisible) {
            unregisterReceiver();
            unregisterObserver();

            getHandler().removeCallbacks(mTicker);

            mAttached = false;
            mRegistered = false;
        }
    }

@@ -569,7 +560,7 @@ public class TextClock extends TextView {
    }

    private void registerObserver() {
        if (isAttachedToWindow()) {
        if (mRegistered) {
            if (mFormatChangeObserver == null) {
                mFormatChangeObserver = new FormatChangeObserver(getHandler());
            }