深入解析美团外卖Flutter-架构演进之路(上篇),2021Android研发必问高级面试题

  1. 全局变量和静态成员变量,这些变量深入解析美团外卖Flutter-架构演进之路(上篇),2021Android研发必问高级面试题_第1张图片
    不会在热刷新时更新。
  2. 修改了main函数中创建的根控件节点,Flutter在热刷新后只会根据原来的根节点重新创建控件树,不会修改根节点。
  3. 某个类从普通类型转换成枚举类型,或者类型的泛型参数列表变化,都会使人刷新失败。

热刷新无法实现更新时,执行一次热重启(Hot Restart)就可以全量更新所有代码,同样不需要重启App,区别是restart会将所有Dart代码打包同步到设备上,并且所有状态都会重置。

Flutter插件

Flutter使用的Dart语言无法直接调用Android系统提供的Java接口,这时就需要使用插件来实现中转。Flutter官方提供了丰富的原生接口封装:

  • android_alarm_manager,访问Android系统的AlertManager。
  • android_intent,构造Android的Intent对象。
  • battery,获取和监听系统电量变化。
  • connectivity,获取和监听系统网络连接状态。
  • device info,获取设备型号等信息。
  • image_picker,从设备中选取或者拍摄照片。
  • package_info,获取App安装包的版本等信息。
  • path_provider,获取常用文件路径。
  • quick_actions,App图标添加快捷方式,iOS的eponymous concept和Android的App Shortcuts
  • sensors,访问设备的加速度和陀螺仪传感器。
  • shared_preferences,App KV存储功能。
  • url_launcher,启动URL,包括打电话、发短信和浏览网页等功能。
  • video_player,播放视频文件或者网络流的控件。

在Flutter中,依赖包由Pub仓库管理,项目依赖配置在pubspec.yaml文件中声明即可(类似于NPM的版本声明Pub Versioning Philosophy),对于未发布在Pub仓库的插件可以使用git仓库地址或文件路径:

dependencies: url_launcher: “>=0.1.2 <0.2.0” collection: “^0.1.2” plugin1: git: url: “git://github.com/flutter/plugin1

你可能感兴趣的:(程序员,架构,移动开发,android)