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

Commit cc554e67 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Revert "Revert "Cleaning up listener when task completes""

This reverts commit 25978ac5.

Reason for revert: fixing the original bug
Bug: 145829442

Change-Id: Ib0a5ca722f3f66b5501df4a478d82eb3625f113d
parent 25978ac5
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -3473,18 +3473,10 @@ public class RemoteViews implements Parcelable, Filter {
        return applyAsync(context, parent, executor, listener, null);
    }

    private CancellationSignal startTaskOnExecutor(AsyncApplyTask task, Executor executor) {
        CancellationSignal cancelSignal = new CancellationSignal();
        cancelSignal.setOnCancelListener(task);

        task.executeOnExecutor(executor == null ? AsyncTask.THREAD_POOL_EXECUTOR : executor);
        return cancelSignal;
    }

    /** @hide */
    public CancellationSignal applyAsync(Context context, ViewGroup parent,
            Executor executor, OnViewAppliedListener listener, OnClickHandler handler) {
        return startTaskOnExecutor(getAsyncApplyTask(context, parent, listener, handler), executor);
        return getAsyncApplyTask(context, parent, listener, handler).startTaskOnExecutor(executor);
    }

    private AsyncApplyTask getAsyncApplyTask(Context context, ViewGroup parent,
@@ -3495,6 +3487,7 @@ public class RemoteViews implements Parcelable, Filter {

    private class AsyncApplyTask extends AsyncTask<Void, Void, ViewTree>
            implements CancellationSignal.OnCancelListener {
        final CancellationSignal mCancelSignal = new CancellationSignal();
        final RemoteViews mRV;
        final ViewGroup mParent;
        final Context mContext;
@@ -3545,6 +3538,7 @@ public class RemoteViews implements Parcelable, Filter {

        @Override
        protected void onPostExecute(ViewTree viewTree) {
            mCancelSignal.setOnCancelListener(null);
            if (mError == null) {
                if (mListener != null) {
                    mListener.onViewInflated(viewTree.mRoot);
@@ -3582,6 +3576,12 @@ public class RemoteViews implements Parcelable, Filter {
        public void onCancel() {
            cancel(true);
        }

        private CancellationSignal startTaskOnExecutor(Executor executor) {
            mCancelSignal.setOnCancelListener(this);
            executeOnExecutor(executor == null ? AsyncTask.THREAD_POOL_EXECUTOR : executor);
            return mCancelSignal;
        }
    }

    /**
@@ -3646,8 +3646,8 @@ public class RemoteViews implements Parcelable, Filter {
            }
        }

        return startTaskOnExecutor(new AsyncApplyTask(rvToApply, (ViewGroup) v.getParent(),
                context, listener, handler, v), executor);
        return new AsyncApplyTask(rvToApply, (ViewGroup) v.getParent(),
                context, listener, handler, v).startTaskOnExecutor(executor);
    }

    private void performApply(View v, ViewGroup parent, OnClickHandler handler) {