缓存Flutter引擎,增加tab FlutterFragment
This commit is contained in:
@@ -18,6 +18,7 @@ import android.view.animation.LinearInterpolator;
|
||||
import android.widget.LinearLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.fragment.app.FragmentTransaction;
|
||||
@@ -178,7 +179,6 @@ import com.yizhuan.xchat_android_library.utils.AppMetaDataUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.JavaUtil;
|
||||
import com.yizhuan.xchat_android_library.utils.codec.DESUtils;
|
||||
import com.yizhuan.xchat_android_library.utils.pref.CommonPref;
|
||||
import com.yuxiaor.flutter.g_faraday.FaradayFragment;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.greenrobot.eventbus.Subscribe;
|
||||
@@ -190,6 +190,8 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import io.flutter.embedding.android.FlutterFragment;
|
||||
import io.flutter.embedding.android.RenderMode;
|
||||
import io.reactivex.SingleObserver;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
|
||||
@@ -236,7 +238,10 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_MSG, new ContactsListFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_SQUARE, new SquareFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_ME, new MeFragment());
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, FaradayFragment.newInstance("main", null, true,null));
|
||||
fragmentArray.put(MainTabLayout.MAIN_TAB_POS_GAME, FlutterFragment
|
||||
.withCachedEngine("xplan_engine")
|
||||
.renderMode(RenderMode.texture)
|
||||
.build());
|
||||
}
|
||||
|
||||
public static void start(Context context) {
|
||||
@@ -507,8 +512,8 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
}
|
||||
onParseIntent();
|
||||
handleNimIntent();
|
||||
if (tempFragment instanceof FaradayFragment && intent != null) {
|
||||
((FaradayFragment) tempFragment).onNewIntent(intent);
|
||||
if (tempFragment instanceof FlutterFragment) {
|
||||
((FlutterFragment) tempFragment).onNewIntent(intent);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -602,6 +607,9 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (tempFragment instanceof FlutterFragment) {
|
||||
((FlutterFragment) tempFragment).onBackPressed();
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||
@@ -1117,28 +1125,41 @@ public class MainActivity extends BaseMvpActivity<IMainView, MainPresenter>
|
||||
StatusBarUtil.transparencyBar(this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPostResume() {
|
||||
super.onPostResume();
|
||||
if (tempFragment instanceof FlutterFragment) {
|
||||
((FlutterFragment) tempFragment).onPostResume();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(
|
||||
int requestCode,
|
||||
@NonNull String[] permissions,
|
||||
@NonNull int[] grantResults
|
||||
) {
|
||||
if (tempFragment instanceof FlutterFragment) {
|
||||
tempFragment.onRequestPermissionsResult(
|
||||
requestCode,
|
||||
permissions,
|
||||
grantResults
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserLeaveHint() {
|
||||
if (tempFragment instanceof FlutterFragment) {
|
||||
((FlutterFragment) tempFragment).onUserLeaveHint();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTrimMemory(int level) {
|
||||
super.onTrimMemory(level);
|
||||
if (tempFragment instanceof FaradayFragment) {
|
||||
((FaradayFragment) tempFragment).onTrimMemory(level);
|
||||
if (tempFragment instanceof FlutterFragment) {
|
||||
((FlutterFragment) tempFragment).onTrimMemory(level);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onUserLeaveHint() {
|
||||
super.onUserLeaveHint();
|
||||
if (tempFragment instanceof FaradayFragment) {
|
||||
((FaradayFragment) tempFragment).onUserLeaveHint();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPostResume() {
|
||||
super.onPostResume();
|
||||
if (tempFragment instanceof FaradayFragment) {
|
||||
((FaradayFragment) tempFragment).onPostResume();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -107,6 +107,9 @@ import java.io.IOException;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import io.flutter.embedding.engine.FlutterEngine;
|
||||
import io.flutter.embedding.engine.FlutterEngineCache;
|
||||
import io.flutter.embedding.engine.dart.DartExecutor;
|
||||
import io.reactivex.plugins.RxJavaPlugins;
|
||||
import io.realm.Realm;
|
||||
import io.realm.RealmConfiguration;
|
||||
@@ -247,6 +250,15 @@ public class XChatApplication extends Application {
|
||||
|
||||
}
|
||||
dealHuaWeiCrash();
|
||||
|
||||
FlutterEngine flutterEngine = new FlutterEngine(this);
|
||||
flutterEngine.getDartExecutor().executeDartEntrypoint(
|
||||
DartExecutor.DartEntrypoint.createDefault()
|
||||
);
|
||||
FlutterEngineCache
|
||||
.getInstance()
|
||||
.put("xplan_engine", flutterEngine);
|
||||
|
||||
LogUtils.d("init time = " +(System.currentTimeMillis() - startTime) +"ms");
|
||||
}
|
||||
|
||||
|
@@ -33,7 +33,7 @@ public class LabActivity extends BaseActivity {
|
||||
findViewById(R.id.rb_h5_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:5503/"));
|
||||
//vue测试地址
|
||||
findViewById(R.id.rb_vue_test).setOnClickListener(v -> CommonWebViewActivity.start(context, "http://192.168.10.7:8080/"));
|
||||
findViewById(R.id.rb_flutter_test).setOnClickListener(v -> startActivity(FlutterActivity.createDefaultIntent(context)));
|
||||
findViewById(R.id.rb_flutter_test).setOnClickListener(v -> startActivity(FlutterActivity.withCachedEngine("xplan_engine").build(context)));
|
||||
int enviroment = CommonPref.instance(BasicConfig.INSTANCE.getAppContext()).getInt(Env.KEY_ENVIRONMENT);
|
||||
//根据ID找到RadioGroup实例
|
||||
RadioGroup group = (RadioGroup) this.findViewById(R.id.radioGroup);
|
||||
|
Reference in New Issue
Block a user