提交 ce5f329a authored 作者: kongdywang's avatar kongdywang

1. Avoid the problem that some functions in the SDK cannot be used normally…

1. Avoid the problem that some functions in the SDK cannot be used normally after a cold start on some models. 2. After the plugin executes onDetachedFromEngine, Picture-in-Picture will be forcibly closed to prevent problems caused by inconsistent variables.
上级 6709e6c4
......@@ -145,6 +145,7 @@ public class FTXPIPManager implements TXSimpleEventBus.EventSubscriber, FtxMessa
public int isSupportDevice() {
int pipResult = FTXEvent.NO_ERROR;
Activity activity = TXFlutterEngineHolder.getInstance().getCurActivity();
if (null != activity) {
if (!activity.isDestroyed()) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
// check permission
......@@ -167,6 +168,10 @@ public class FTXPIPManager implements TXSimpleEventBus.EventSubscriber, FtxMessa
pipResult = FTXEvent.ERROR_PIP_ACTIVITY_DESTROYED;
LiteavLog.e(TAG, "enterPip failed,because activity is destroyed");
}
} else {
pipResult = FTXEvent.ERROR_PIP_ACTIVITY_DESTROYED;
LiteavLog.e(TAG, "current activity is null, please check cur act status!");
}
return pipResult;
}
......
......@@ -465,12 +465,12 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
LiteavLog.i(TAG, "onDetachedFromEngine");
mFTXDownloadManager.destroy();
mFlutterPluginBinding = null;
if (null != mOrientationManager) {
mOrientationManager.disable();
}
if (null != mTxPipManager) {
mTxPipManager.releaseActivityListener();
mTxPipManager.exitPip();
}
// Close the solution to the problem of the picture-in-picture click restore
// failure on some versions of Android 12.
......@@ -480,6 +480,7 @@ public class SuperPlayerPlugin implements FlutterPlugin, ActivityAware,
unregisterReceiver();
TXFlutterEngineHolder.getInstance().destroy(binding);
TXLiveBase.setListener(null);
mFlutterPluginBinding = null;
}
@Override
......
......@@ -36,7 +36,7 @@ public class TXFlutterEngineHolder {
public void attachBindLife(FlutterPlugin.FlutterPluginBinding binding) {
if (mLifeCallback != null) {
LiteavLog.w(TAG, "TXFlutterEngineHolder is already attach");
LiteavLog.w(TAG, "TXFlutterEngineHolder is already attached");
return;
}
if (null == binding) {
......@@ -52,6 +52,7 @@ public class TXFlutterEngineHolder {
@Override
public void onActivityStarted(@NonNull Activity activity) {
mFrontContextCount++;
LiteavLog.i(TAG, "activity is started:" + activity);
if (mIsEnterBack && mFrontContextCount > 0) {
mIsEnterBack = false;
notifyResume();
......@@ -61,6 +62,7 @@ public class TXFlutterEngineHolder {
@Override
public void onActivityResumed(@NonNull Activity activity) {
synchronized (mActivityList) {
LiteavLog.i(TAG, "activity is resumed:" + activity);
int index = findIndexByAct(activity);
if (index >= 0) {
// refresh index
......@@ -78,6 +80,7 @@ public class TXFlutterEngineHolder {
@Override
public void onActivityStopped(@NonNull Activity activity) {
mFrontContextCount--;
LiteavLog.i(TAG, "activity is stopped:" + activity);
if (!mIsEnterBack && mFrontContextCount <= 0) {
mIsEnterBack = true;
notifyEnterBack();
......@@ -92,6 +95,7 @@ public class TXFlutterEngineHolder {
@Override
public void onActivityDestroyed(@NonNull Activity activity) {
synchronized (mActivityList) {
LiteavLog.i(TAG, "activity is destroyed:" + activity);
int index = findIndexByAct(activity);
if (index >= 0) {
mActivityList.remove(index);
......@@ -146,6 +150,7 @@ public class TXFlutterEngineHolder {
}
public void destroy(FlutterPlugin.FlutterPluginBinding binding) {
LiteavLog.i(TAG, "called engine holder destroy");
if (null == mLifeCallback) {
return;
}
......@@ -153,6 +158,7 @@ public class TXFlutterEngineHolder {
return;
}
((Application)binding.getApplicationContext()).unregisterActivityLifecycleCallbacks(mLifeCallback);
mLifeCallback = null;
}
public void addAppLifeListener(TXAppStatusListener listener) {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论