Flutter   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了【Flutter 面试】main入口函数会被调用几次大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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

创建一个 Flutter 项目,然后运行,@H_422_8@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 页面,返回,再次点击跳转

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

日志如下:

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

发现执行了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)
    )
}

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

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

增加一个函数 main1:

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

void main1() {
  runApp(MyApp());
  print('===main1====');
}

修改引擎 Entrypoint 为 @H_422_8@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")
    }
}

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

此时执行的是 @H_422_8@main1 入口函数

总结

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

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

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

交流

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

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

@H_801_129@

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

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: