一些问题
- 路由存在的意义?
- 如果是你,会如何设计?
- dialog、bottomsheet、snackbar、dropmenubutton的底层实现是怎样的?
- pop的时候路由是如何传递数据回到上一个界面的?
https://flutter.cn/docs/development/ui/animations
作用:保存动画的差值和状态。整个动画执行过程可以是线性的、曲线的、一个步进函数或者任何其他曲线,由Curve来决定。
ContentProvider
是一种数据共享型组件,可以在应用之间共享数据。所以与BroadcastReceiver一样,其可以脱离Activity实现。在实现ContentProvider时,
需要继承ContentProvider抽象类,然后在AndroidManifest.xml中注册类名和ContentProvider的域名。同样的,不需要重写onCreat()方法,而是实现CRUD操作,
所以ContentProvider没有启动和停止的概念,更像是一个系统级的监听器。与前三个组件不同的是,ContentProvider并没有使用intent,
而是使用URI来判定能否为ContentResolver提供数据共享。
关于ContentProvider,用来提供其他地方(包括其他App)调用的一种全局(系统级)方式。有了ContentProvider,我们就能方便的调用相册的东西、
进行文件选择,在我们自己的App中,也可以提供一个数据中心。
当数据量比较大的时候,继续用Parcel做容器效率会比较低,因此它还使用了匿名共享内存的方式。
但是有一个问题是,ContentProvider的提供者进程不再存活时,其他进程通过Provider读一个非常简单的数据时,都需要先把提供者进程启动起来(除非
指定multiprocess=true),这对用户是相当不友好的。又因为其是间接通过db进行数据操作,所以效率也远不如直接操作db。因此在用户app中,
不是很建议经常使用ContentProvider。不过对于系统级的app,它统一了数据操作的规范,利是远大于弊的。
在很多开源库中,也运用了ContentProvider的特性来进行初始化。