// Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. package io.flutter.app; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; import android.os.Bundle; import android.support.annotation.NonNull; import android.util.Log; import io.flutter.app.FlutterActivityDelegate.ViewFactory; import io.flutter.plugin.common.PluginRegistry; import io.flutter.view.FlutterNativeView; import io.flutter.view.FlutterView; /** * Base class for activities that use Flutter. */ public class FlutterActivity extends Activity implements FlutterView.Provider, PluginRegistry, ViewFactory { private static final String TAG = "FlutterActivity"; private final FlutterActivityDelegate delegate = new FlutterActivityDelegate(this, this); // These aliases ensure that the methods we forward to the delegate adhere // to relevant interfaces versus just existing in FlutterActivityDelegate. private final FlutterActivityEvents eventDelegate = delegate; private final FlutterView.Provider viewProvider = delegate; private final PluginRegistry pluginRegistry = delegate; /** * Returns the Flutter view used by this activity; will be null before * {@link #onCreate(Bundle)} is called. */ @Override public FlutterView getFlutterView() { return viewProvider.getFlutterView(); } /** * Hook for subclasses to customize the creation of the * {@code FlutterView}. * *
The default implementation returns {@code null}, which will cause the * activity to use a newly instantiated full-screen view.
*/ @Override public FlutterView createFlutterView(Context context) { return null; } /** * Hook for subclasses to customize the creation of the * {@code FlutterNativeView}. * *The default implementation returns {@code null}, which will cause the * activity to use a newly instantiated native view object.
*/ @Override public FlutterNativeView createFlutterNativeView() { return null; } @Override public boolean retainFlutterNativeView() { return false; } @Override public final boolean hasPlugin(String key) { return pluginRegistry.hasPlugin(key); } @Override public final