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

Commit e81b323a authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Using EventBus for AppWidgetProviderChanges."

parents 0e26fc47 b78bb4fb
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -33,6 +33,8 @@ import android.view.View;
import android.view.ViewStub;
import com.android.internal.logging.MetricsLogger;
import com.android.systemui.R;
import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.AppWidgetProviderChangedEvent;
import com.android.systemui.recents.misc.Console;
import com.android.systemui.recents.misc.ReferenceCountedTrigger;
import com.android.systemui.recents.misc.SystemServicesProxy;
@@ -45,14 +47,12 @@ import com.android.systemui.recents.views.RecentsView;
import com.android.systemui.recents.views.SystemBarScrimViews;
import com.android.systemui.recents.views.ViewAnimation;

import java.lang.ref.WeakReference;
import java.util.ArrayList;

/**
 * The main Recents activity that is started from AlternateRecentsComponent.
 */
public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks,
        RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks {
public class RecentsActivity extends Activity implements RecentsView.RecentsViewCallbacks {

    public final static int EVENT_BUS_PRIORITY = Recents.EVENT_BUS_PRIORITY + 1;

@@ -322,6 +322,10 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Register this activity with the event bus
        EventBus.getDefault().register(this, EVENT_BUS_PRIORITY);

        // For the non-primary user, ensure that the SystemServicesProxy and configuration is
        // initialized
        RecentsTaskLoader.initialize(this);
@@ -442,6 +446,7 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView

        // Stop listening for widget package changes if there was one bound
        mAppWidgetHost.stopListening();
        EventBus.getDefault().unregister(this);
    }

    public void onEnterAnimationTriggered() {
@@ -451,16 +456,12 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
        mRecentsView.startEnterRecentsAnimation(ctx);

        if (mSearchWidgetInfo != null) {
            final WeakReference<RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks> cbRef =
                    new WeakReference<RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks>(
                            RecentsActivity.this);
            ctx.postAnimationTrigger.addLastDecrementRunnable(new Runnable() {
                @Override
                public void run() {
                    // Start listening for widget package changes if there is one bound
                    RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks cb = cbRef.get();
                    if (cb != null) {
                        mAppWidgetHost.startListening(cb);
                    if (mAppWidgetHost != null) {
                        mAppWidgetHost.startListening();
                    }
                }
            });
@@ -577,10 +578,13 @@ public class RecentsActivity extends Activity implements RecentsView.RecentsView
        mAfterPauseRunnable = r;
    }

    /**** RecentsAppWidgetHost.RecentsAppWidgetHostCallbacks Implementation ****/
    /**** EventBus events ****/

    @Override
    public void refreshSearchWidgetView() {
    public final void onBusEvent(AppWidgetProviderChangedEvent event) {
        refreshSearchWidgetView();
    }

    private void refreshSearchWidgetView() {
        if (mSearchWidgetInfo != null) {
            SystemServicesProxy ssp = RecentsTaskLoader.getInstance().getSystemServicesProxy();
            int searchWidgetId = ssp.getSearchAppWidgetId(this);
+6 −13
Original line number Diff line number Diff line
@@ -20,24 +20,19 @@ import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetProviderInfo;
import android.content.Context;
import com.android.systemui.recents.events.EventBus;
import com.android.systemui.recents.events.activity.AppWidgetProviderChangedEvent;

/** Our special app widget host for the Search widget */
public class RecentsAppWidgetHost extends AppWidgetHost {

    /* Callbacks to notify when an app package changes */
    interface RecentsAppWidgetHostCallbacks {
        void refreshSearchWidgetView();
    }

    RecentsAppWidgetHostCallbacks mCb;
    boolean mIsListening;

    public RecentsAppWidgetHost(Context context, int hostId) {
        super(context, hostId);
    }

    public void startListening(RecentsAppWidgetHostCallbacks cb) {
        mCb = cb;
    public void startListening() {
        if (!mIsListening) {
            mIsListening = true;
            super.startListening();
@@ -47,11 +42,9 @@ public class RecentsAppWidgetHost extends AppWidgetHost {
    @Override
    public void stopListening() {
        if (mIsListening) {
            mIsListening = false;
            super.stopListening();
        }
        // Ensure that we release any references to the callbacks
        mCb = null;
        mIsListening = false;
    }

    @Override
@@ -66,8 +59,8 @@ public class RecentsAppWidgetHost extends AppWidgetHost {
    @Override
    protected void onProviderChanged(int appWidgetId, AppWidgetProviderInfo appWidgetInfo) {
        super.onProviderChanged(appWidgetId, appWidgetInfo);
        if (mIsListening && mCb != null) {
            mCb.refreshSearchWidgetView();
        if (mIsListening) {
            EventBus.getDefault().send(new AppWidgetProviderChangedEvent());
        }
    }
}
+28 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2015 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.recents.events.activity;

import com.android.systemui.recents.RecentsAppWidgetHost;
import com.android.systemui.recents.events.EventBus;

/**
 * This is sent by the {@link RecentsAppWidgetHost} whenever the search provider widget changes, and
 * subscribers can update accordingly.
 */
public class AppWidgetProviderChangedEvent extends EventBus.Event {
    // Simple event
}