【Flutter 面试】main入口函数会被调用几次

【Flutter 面试】main入口函数会被调用几次,第1张

概述老孟导读:这是一个读者面试时被问到的问题,这个问题前段时间我也在VIP交流群和大家一起探讨过。 这个问题涉及引擎的相关知识,如果不了解相关知识,很难回答正确,因为不管说调用几次都是错误的,下面来看一下

老孟导读:这是一个读者面试时被问到的问题,这个问题前段时间我也在VIP交流群和大家一起探讨过。

这个问题涉及引擎的相关知识,如果不了解相关知识,很难回答正确,因为不管说调用几次都是错误的,下面来看一下引擎的相关知识。

创建一个 Flutter 项目,然后运行,main入口函数 只会执行一次,下面修改项目的 MainActivity ,

class MainActivity : Activity() {    overrIDe fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentVIEw(R.layout.activity_main)        findVIEwByID<button>(R.ID.button).setonClickListener {            startActivity(Intent(this,FlutterActivity::class.java))        }    }}

将其修改为一个普通的 Activity(原来是 FlutterActivity),添加一个按钮,跳转到 FlutterActivity,加载 Flutter 页面。

在 Flutter 的 main 入口函数处添加日志:

voID main() {  runApp(MyApp());  print('===main====');}

运行,点击跳转,跳转到了Flutter 页面,返回,再次点击跳转:

日志如下:

发现执行了2次main 入口函数。

使用缓存引擎跳转:

val FlutterEngine = FlutterEngine(this)FlutterEngine.dartExecutor.executeDartEntrypoint(        DartExecutor.DartEntrypoint.createDefault())FlutterEngineCache        .getInstance()        .put("engine_ID",FlutterEngine)findVIEwByID<button>(R.ID.button).setonClickListener {    startActivity(            FlutterActivity                    .withCachedEngine("engine_ID")                    .build(this)    )}

运行,发现还没有点击跳转,就执行了1次main 入口函数,点击跳转,然后这次不在执行 main 入口函数。

增加一个函数 main1:

voID main() {  runApp(MyApp());  print('===main====');}voID main1() {  runApp(MyApp());  print('===main1====');}

修改引擎 Entrypoint 为 main1:

class MainActivity : Activity() {    overrIDe fun onCreate(savedInstanceState: Bundle?) {        super.onCreate(savedInstanceState)        setContentVIEw(R.layout.activity_main)        val FlutterEngine = FlutterEngine(this)        FlutterEngine.dartExecutor.executeDartEntrypoint(//            DartExecutor.DartEntrypoint.createDefault()                createEntrypoint()        )        FlutterEngineCache                .getInstance()                .put("engine_ID",FlutterEngine)        findVIEwByID<button>(R.ID.button).setonClickListener {            startActivity(                    FlutterActivity                            .withCachedEngine("engine_ID")                            .build(this)            )        }    }    fun createEntrypoint(): DartExecutor.DartEntrypoint {        val FlutterLoader: FlutterLoader = FlutterInjector.instance().FlutterLoader()        return DartExecutor.DartEntrypoint(FlutterLoader.findAppBundlePath(),"main1")    }}

此时执行的是 main1 入口函数。

总结

通过上面的实验,总结如下:

入口函数 执行的次数取决于 引擎的启动次数,每启动一次引擎,执行一次入口函数 。引擎的入口函数是可以指定的,默认是 main。

因此面试过程中,不管回答几次都是错误的。

交流

老孟Flutter博客(330个控件用法+实战入门系列文章):http://laomengit.com

欢迎加入Flutter交流群(微信:laomengit)、关注公众号【老孟Flutter】:

总结

以上是内存溢出为你收集整理的【Flutter 面试】main入口函数会被调用几次全部内容,希望文章能够帮你解决【Flutter 面试】main入口函数会被调用几次所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1000428.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-21
下一篇2022-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存