没有合适的资源?快使用搜索试试~ 我知道了~
架构 上面是从一个开源项目中了解到的框架结构,以最简洁的方式搭建一个app的基础框架。 框架的几个特点是: 通过Jetpack的Navigation构建单Activity多Fragment结构,我们知道Activity是属于比较重的组件,而Fragment是比较轻量化的,因此这种结构对界面性能方面有很大影响 通过koin这个依赖注入框架来管理ViewModel等实例的生命周期,早期的SSH框架也是因为Spring这个依赖注入特性而更加出名 使用当前比较优秀的数据请求框架来负责各种类型数据的处理 麻雀虽小,五脏俱全,任何一个app都离不开这些基础的架构,而上面的框架搭建起来很简洁,后期维
资源详情
资源评论
资源推荐

Android快速搭建快速搭建MVVM框架框架
架构架构
上面是从一个开源项目中了解到的框架结构,以最简洁的方式搭建一个app的基础框架。
框架的几个特点是:
通过Jetpack的Navigation构建单Activity多Fragment结构,我们知道Activity是属于比较重的组件,而Fragment是比较轻量化
的,因此这种结构对界面性能方面有很大影响
通过koin这个依赖注入框架来管理ViewModel等实例的生命周期,早期的SSH框架也是因为Spring这个依赖注入特性而更加出
名
使用当前比较优秀的数据请求框架来负责各种类型数据的处理
麻雀虽小,五脏俱全,任何一个app都离不开这些基础的架构,而上面的框架搭建起来很简洁,后期维护也很清晰
具体剖析具体剖析
一、一、Navigation
简介:简介:
Navigation是Jetpack四大组件中的其中一个,目前也比较稳定了

我们都知道fragment有非常多的优势,它本身是一个VIew派生而来的控件,嵌套灵活,渲染所消耗的资源明显小于activity,
数据的传递也更加方便,当然它的优点并不止这些。
但是在应用开发的过程中,开发者们也发现了不少这种做法带来的坑。例如需要维护复杂的fragment回退栈、使用不当的情况
下经常出现fragment重叠、经常由于activity已经销毁导致使用上下文crash、等等等等的问题。
navigation就是为了解决这些问题而出现的,用于实现单activity多fragment形式的官方解决方案
使用样例:使用样例:
1)先配置跳转信息,在)先配置跳转信息,在res/navigation目录下新建一个目录下新建一个navigation.xml,配置如下内容:,配置如下内容:
上面fragment和activity标签就是代表需要跳转的具体类,action标签代表一个具体的跳转信息,argument代表的是跳转到这个
类时可以传递的参数定义
2)界面跳转,比如上面的)界面跳转,比如上面的TabFragment跳转到跳转到BrowserActivity时可以这样操作:时可以这样操作:
Navigation.findNavController(homeRecycleView).navigate(TabFragmentDirections.actionTabToBrowser().setUrl("http://www.baidu.com"))
而BrowserActivity里面只要两行代码就能获取到参数:
val args by navArgs()
val url = args.url
要使用上面的要使用上面的argument必须在必须在gradle里面引入里面引入safeArgs相关依赖,如下:相关依赖,如下:
1)App的build.gradle文件添加:
apply plugin: 'androidx.navigation.safeargs'
2)Project的build.gradle文件中添加:
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.2.1"
}
当然也可以不使用argument标签来进行参数传递,不过这个标签的好处就是对类型做了限定,所以也是safe argument的由
来,个人感觉另一个好处就是每个界面传递的参数一目了然,不会漏掉或者传错
findNavController传入的参数可以是Activity或者View,最终逻辑都是寻找到NavHostFragment,然后获取它的
mNavController,这样做得好处是我们只要传递给它一个view就能进行跳转了,源码如下:
private static NavController findViewNavController(@NonNull View view) {
while (view != null) {
NavController controller = getViewNavController(view);
if (controller != null) {
return controller;
}
ViewParent parent = view.getParent();
view = parent instanceof View ? (View) parent : null;
}
return null;
}
从上面大概可以了解到使用Navigation进行fragment管理的好处不仅是对各种异常情况的处理,代码也会简洁很多,而且参数
传递也多了一些特性
剩余6页未读,继续阅读




















weixin_38617615
- 粉丝: 6
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- (源码)基于Arduino平台的颗粒物传感器监测系统.zip
- 近期国际金融基础设施机构区块链技术研究进展及重要观点.docx
- 20XXIT科技互联网年会创意策划案通用课件模板.pptx
- 物联网感知层设计的主要技术要点研究.docx
- 启程自动化培训机构每日一题案例解析三.doc
- 机械设计方案制造及其自动化(汽车工程)专业.doc
- 礼仪修养显个人魅力信息化说课稿.ppt
- 我的毕设-基于知识图谱和循环神经网络的推荐系统
- 根际微生物群落结构与生态功能
- 我国计算机业的发展状况.doc
- 启发式教学法在软件工程课程中的应用.docx
- 基于消费者心理视角网络广告效果评价研究分析.doc
- 影响计算机网络安全的因素及解决措施.docx
- C单片机远程数据采集系统设计方案.doc
- 计算机基础知识题集414道.doc
- 我国高校教育信息化现状及发展策略研究.docx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

评论0