当前位置: 首页 > news >正文

国内网站速度慢cpu占用超出网站空间的分配值

国内网站速度慢,cpu占用超出网站空间的分配值,做彩票交流网站犯法吗,单页加盟网站模板Flutter 内嵌 android 原生 View以及相互跳转 一. 内嵌android 原生View二、android 与 flutter 相互跳转 一. 内嵌android 原生View 在android 工程的包名下,也可在MainActivity创建 android 原生view ,继承PlatformView // 1.自定义textview public st…

Flutter 内嵌 android 原生 View以及相互跳转

    • 一. 内嵌android 原生View
    • 二、android 与 flutter 相互跳转

一. 内嵌android 原生View

  1. 在android 工程的包名下,也可在MainActivity创建 android 原生view ,继承PlatformView
    // 1.自定义textview
    public static class MyTextView implements PlatformView{

     private TextView textView ;/**** @param context* @param messenger 用于消息传递* @param id 生成时会分配一个唯一 ID* @param maps Flutter 传递的初始化参数。*/public MyTextView(Context context ,BinaryMessenger messenger,int id,Map<String,Object> maps) {textView = new TextView(context);textView.setText("我是来自android原生的textView");if (maps != null){String text = maps.get("text").toString();textView.setText(text);}textView.setTextColor(Color.RED);}// 返回要嵌入 Flutter 层次结构的Android View@Nullable@Overridepublic View getView() {return textView;}//释放此View时调用,此方法调用后 View 不可用,此方法需要清除所有对象引用,否则会造成内存泄漏。@Overridepublic void dispose() {}
    

    }

  2. 新建MyViewFactory.java注册PlatformView

public class MyViewFactory extends PlatformViewFactory {private final BinaryMessenger messenger;public MyViewFactory(BinaryMessenger messenger) {super(StandardMessageCodec.INSTANCE);this.messenger = messenger;}@SuppressWarnings("unchecked")@Overridepublic PlatformView create(Context context, int id, Object args) {Map<String, Object> params = (Map<String, Object>) args;return new MainActivity.MyTextView(context, messenger, id, params);}}
  1. 创建plugin
public class MyViewFlutterPlugin implements FlutterPlugin {@Overridepublic void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {BinaryMessenger binaryMessenger = binding.getBinaryMessenger();binding.getPlatformViewRegistry().registerViewFactory("plugins.nightfarmer.top/myview",new MyViewFactory(binaryMessenger));}@Overridepublic void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {}
}
  1. 在MainActivy 中注册
    @Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {super.configureFlutterEngine(flutterEngine);flutterEngine.getPlugins().add(new MyViewFlutterPlugin());}
  1. 在flutter 中使用
Container(width: 100,height: 100,child:  AndroidView(viewType: "plugins.nightfarmer.top/myview",creationParams: {'text':'Flutter传给AndroidTextView的参数'},creationParamsCodec: StandardMessageCodec(),),),

二、android 与 flutter 相互跳转

  1. flutter 挑战到 原生Activity
  var platform = MethodChannel('com.example.flutter/native_channel');void goToNativeActivity() {platform.invokeMethod('goToNative');}

在MainActivty 中注册通道跳转到TestActivity

 private static final String CHANNEL = "com.example.flutter/native_channel";@Overridepublic void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {super.configureFlutterEngine(flutterEngine);flutterEngine.getPlugins().add(new MyViewFlutterPlugin());//注册通道new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL).setMethodCallHandler((call, result) -> {// 接收来自Flutter的方法调用if (call.method.equals("goToNative")) {Intent intent = new Intent(MainActivity.this, TestActivity.class);startActivity(intent);result.success(true);} else {result.notImplemented();}});}
  1. Activity 中跳转Flutter页面
    在Manifest.xml 中注册
<activityandroid:name="io.flutter.embedding.android.FlutterActivity"android:theme="@style/LaunchTheme"android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"android:hardwareAccelerated="true"android:windowSoftInputMode="adjustResize"/>

根据路由跳转到Flutter 页面

        startActivity(FlutterActivity.withNewEngine().initialRoute("/my_route")
//        .withCachedEngine("engine_id").build(currentActivity));

跳转会与 2s的黑屏情况,在MyApp中

public class MyApp extends Application {private FlutterEngine fe ;@Overridepublic void onCreate() {super.onCreate();// 解决原生挑战到 flutter 会有2s 黑屏 的问题fe = new FlutterEngine(this);fe.getDartExecutor().executeDartEntrypoint(DartExecutor.DartEntrypoint.createDefault());FlutterEngineCache.getInstance().put("engine_id",fe);}//当application 销毁的时候调用@Overridepublic void onTerminate() {//销毁flutter引擎fe.destroy();super.onTerminate();}
}

在清单文件中注册 MyApp

 <applicationandroid:name="com.qxx.ai_score_manager_flutter.MyApp">
http://www.yayakq.cn/news/128889/

相关文章:

  • 专业系统网站好查看网站被百度收录
  • 网站的规划建设如何布局o2o网站建设公司
  • 免费网站空间怎么做室内装修培训
  • 深圳福田网站建设做的王者荣耀钓鱼网站
  • dede网站怎么做单页面如何看一个网站的备案在哪里做的
  • 无锡网站建设推荐智勇仿站酷网站模板
  • 网站开发人员职位描述哪个专业学习网站建设
  • 分类目录网站程序网络广告创意
  • 永兴县网站建设服务商虚拟主机购买网站
  • 溧阳做网站哪家好专门做ppt会员网站
  • 苏州吴中区做网站价格做网站的广告图片
  • 域名与网站的区别设计类招聘网站
  • 南通网站开发工作纪律和生活纪律研讨发言材料
  • 做swf网站营销软文范例大全
  • 网站后台 请示天津市建设工程交易信息网
  • 企业策划营销中心网站网页优化
  • 百度推广还要求做网站企业文化墙设计网站推荐
  • 东台市住房和城乡建设局闷网站海东营销网站建设服务
  • 新都网站开发wordpress的插件
  • 游戏门户网站有哪些做纯静态网站怎么样
  • 建设网站的总结搜索引擎优化seo的策略主要有
  • 做本机网站青岛网站建设q479185700棒
  • 仿站教程深圳网站关键词优化公司
  • 做数据表格的网站网站开发制作入什么科目
  • 如何做自己的播报网站做网站十大公司哪家好
  • 如何用word做简单的网站58同城网网站建设
  • 公司企业网站制作wordpress数据库损坏网站
  • 长沙建设公司网站网站 提交入口
  • 如何利用模板建站WordPress连接微博
  • 网站建站服务公司农业信息门户网站建设方案