mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Do not pause rendering when android activity loses focus (flutter/engine#4848)
* do not pause rendering when android view loses focus
This commit is contained in:
parent
573def2bee
commit
03e3c8bc39
@ -47,10 +47,14 @@ enum AppLifecycleState {
|
||||
/// in the foreground inactive state. Apps transition to this state when in
|
||||
/// a phone call, responding to a TouchID request, when entering the app
|
||||
/// switcher or the control center, or when the UIViewController hosting the
|
||||
/// Flutter app is transitioning. Apps in this state should assume that they
|
||||
/// may be [paused] at any time.
|
||||
/// Flutter app is transitioning.
|
||||
///
|
||||
/// On Android, this state is currently unused.
|
||||
/// On Android, this corresponds to an app or the Flutter host view running
|
||||
/// in the foreground inactive state. Apps transition to this state when
|
||||
/// another activity is focused, such as a split-screen app, a phone call,
|
||||
/// a picture-in-picture app, a system dialog, or another window.
|
||||
///
|
||||
/// Apps in this state should assume that they may be [paused] at any time.
|
||||
inactive,
|
||||
|
||||
/// The application is not currently visible to the user, not responding to
|
||||
|
||||
@ -99,6 +99,12 @@ public class FlutterActivity extends Activity implements FlutterView.Provider, P
|
||||
super.onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
eventDelegate.onStop();
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
|
||||
@ -218,6 +218,11 @@ public final class FlutterActivityDelegate
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStop() {
|
||||
flutterView.onStop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostResume() {
|
||||
if (flutterView != null) {
|
||||
|
||||
@ -54,6 +54,11 @@ public interface FlutterActivityEvents
|
||||
*/
|
||||
void onDestroy();
|
||||
|
||||
/**
|
||||
* @see android.app.Activity#onStop()
|
||||
*/
|
||||
void onStop();
|
||||
|
||||
/**
|
||||
* Invoked when the activity has detected the user's press of the back key.
|
||||
*
|
||||
|
||||
@ -98,6 +98,13 @@ public class FlutterFragmentActivity
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onStop() {
|
||||
eventDelegate.onStop();
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
super.onPause();
|
||||
|
||||
@ -128,7 +128,14 @@ public class FlutterNativeView implements BinaryMessenger {
|
||||
|
||||
// Called by native to send us a platform message.
|
||||
private void handlePlatformMessage(final String channel, byte[] message, final int replyId) {
|
||||
assertAttached();
|
||||
// The platform may not be attached immediately in certain cases where a new bundle is run -
|
||||
// the native view is created in a separate thread. This mostly happens when the app restarts in dev
|
||||
// mode when switching into split-screen mode. Preventing app restarts on layout and density
|
||||
// changes will prevent this, and afterwards this can be changed back to an assert.
|
||||
if (!isAttached()) {
|
||||
Log.d(TAG, "PlatformView is not attached");
|
||||
return;
|
||||
}
|
||||
BinaryMessageHandler handler = mMessageHandlers.get(channel);
|
||||
if (handler != null) {
|
||||
try {
|
||||
|
||||
@ -267,7 +267,7 @@ public class FlutterView extends SurfaceView
|
||||
}
|
||||
|
||||
public void onPause() {
|
||||
mFlutterLifecycleChannel.send("AppLifecycleState.paused");
|
||||
mFlutterLifecycleChannel.send("AppLifecycleState.inactive");
|
||||
}
|
||||
|
||||
public void onPostResume() {
|
||||
@ -278,7 +278,7 @@ public class FlutterView extends SurfaceView
|
||||
}
|
||||
|
||||
public void onStop() {
|
||||
mFlutterLifecycleChannel.send("AppLifecycleState.suspending");
|
||||
mFlutterLifecycleChannel.send("AppLifecycleState.paused");
|
||||
}
|
||||
|
||||
public void onMemoryPressure() {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user