学习安卓大半年了,以前是学 Java 的,转过来之后,刚开始写代码就发现,安卓不用搭环境,比如 ssm 框架,配置信息什么的,就是直接开始逻辑代码,一直就很模糊,所以请教一下,安卓跟 Java 的区别和联系,还有,安卓项目会不会用到 Java 的框架?
1
ctracer 2018-12-10 11:20:27 +08:00 1
安卓不用搭环境? 流行框架?
MVP/MVVN/google 架构组件了解下 rxjava/retrofit/dagger/glide 了解下 插件化热修复了解下 kotlin/flutter 了解下 |
2
glaucus 2018-12-10 11:32:14 +08:00 1
不用框架?要么你项目太简单,要么你太厉害 - _ -
|
3
HongJay 2018-12-10 11:35:23 +08:00
楼上的激动了吧。。Android 的框架和 ssm 的差别还是有的吧
|
4
loshine1992 2018-12-10 11:46:09 +08:00
|
5
RoyL 2018-12-10 11:49:29 +08:00 1
安卓开发本身不就是 Application Framework 么。。。。
|
6
honeycomb 2018-12-10 12:54:32 +08:00 via Android
还有 AndroidX
|
7
youngxhui 2018-12-10 12:58:43 +08:00 via Android
jetpack 了解一下
|
8
ilaipi 2018-12-10 13:23:16 +08:00
android 端的框架扮演的角色是不是应该类似与 react 这种框架的角色?
android 端正常来讲就是个客户端,还是要和后端来交互的吧,所以数据库应该不需要。感觉 spring 的 ioc 概念应该可以用,但是其它的就不需要了。 |
9
wly19960911 2018-12-10 13:31:42 +08:00 1
Android sdk 就是框架了,里面包括了创建项目各种 task 的流程。
主要是你没有从后端转换到客户端的概念上来,基于 spring 的后端是因为后端系统的庞大和相互耦合的各种工具,需要梳理掉整个项目的流程和优化性能和开发。 客户端的任务相对于庞大的后端逻辑要简化不少,主要是组件之间的互相调用为主(画 UI ),并不没有后端这么耦合。但是随着而来的是状态的管理是一个相对耦合的东西(我是初级的,如果有说错轻喷) |
10
maninfog 2018-12-10 13:43:30 +08:00 via iPhone
安卓和 Java 的联系就是安卓官方根据众多因素选择将 Java 作为应用开发语言,就像 iOS 应用选 OC 一样。至于安卓和后台的差别就类似于前端和后台的差别了,安卓也属于大前端范畴。
|
11
ShirleyLuo OP @ctracer orz,膜拜,刚开始学安卓,只有 mvp 在最开始去了解了一下,好像跟 Java 的 MVC 差不多,但是没有具体去实现,也可能是刚开始还不懂,所以就没去用,所以现在的代码都是一堆在 mainactivity 里面,略混乱,但是,也因为刚开始写安卓,所以代码都不多,一个主类几百行,但是现在还是应该开始写好看点了哈,,所以决定用 mvp,然后 mvvp 是么看过,google 的也没看过,rxjava/retrofit/dagger/glide,听得比较多,但是也也没有具体学过用过,kotlin/flutter 都是最近的新框架,也是没用过,插件化热修复连听都没听过,长路漫漫啊。
|
12
ShirleyLuo OP @wly19960911 所以说就是安卓相对来说是前段的东西,逻辑不多,所以不需要,是这个意思嘛
|
13
ShirleyLuo OP @glaucus 那肯定是前者了,233
|
14
ShirleyLuo OP @loshine1992 这样哇,这个配置相对来说,确实简单了不少
|
15
ShirleyLuo OP @maninfog 作为开发语言这个倒是知道的,oc,emm,也没了解过,,所以说,安卓相对来说前段多一点,就不用那么多搭框架之类的了哈
|
16
wly19960911 2018-12-10 13:56:37 +08:00
@ShirleyLuo #11 不是不需要,是需求不同,创建组件并且显示,这个后面有非常大的框架在支撑啊,其实框架是就是你在什么上面开发的,并提供丰富的功能,你在 Android sdk 上开发,你在 spring 上开发,前端也基于各种框架开发。
你没有明白你究竟用什么工具,假如让一个新人学习 java 他也会奇怪,抬手就写个 http 的服务器,我都没搭建,怎么跑起来的,其实新人都没明白他在用 tomcat 去执行。 |
17
ShirleyLuo OP @wly19960911 云里雾里,,,你想说的是:安卓本身已经为我们写好了大部分的框架结构了吗,自己相当于在这基础上进行开发
|
18
wly19960911 2018-12-10 14:50:52 +08:00
@ShirleyLuo #16 嗯,这个地方我没说好,不管做什么开发,实际上你已经用了很多工具你感受不到,只是相对集成了。
Android 本身集成了足够的一套工具用于开发,客户端的功能不需要那么多工具去扩展各种功能,该有的都有了,剩下来的功能就仅仅作为包去扩展。其实可以参考下前端,一个框架就能支撑起网页的主要功能,其他功能都是扩展的。 spring 是作为基础框架所以需要扩展的很多框架,后端随着业务逻辑和流量变多,压力变大需要扩展,加上各种工具、框架需要封装独立成为系统的一个子模块,作为多个模块之间的中间层,每个工具的场景不一样。而相对而言 Android 的功能都是每个封装组件带来的,你是对组件进行修改,没有感觉到有后端这种子模块的味道(主要是都不一定做出来是通用的组件),所以还是前后端的需求和情景不一样导致的。 |
19
kile 2018-12-10 15:04:24 +08:00
MVP 单人开发或者开发人数不超过 10 人的话建议不要使用
大量的接口类,model 类,presenter 类混杂在一起,解耦是解耦了,等别人调试你的代码时候在无数的接口中穿梭找实现代码那时候就不开心了. MVP 这个思想没有准确的规范,1000 个人有 1000 种不同的实现方式,实现方式的不同也导致使用的时候诸多问题...有些人写着写着 presenter 层就消失了,他觉得毫无用处,有些人写着写着 model 层的东西又去 p 层了,model 层又消失. 看着很高大上,但是并不适合人数过小时候的团队 |
21
passerbytiny 2018-12-10 15:20:49 +08:00
ssm 是 MVC 思想的实践框架,然而现在已经蜕变成只有 M、C,没有 V (小公司甚至连 M 都没有)。
Spring Cloud 不是框架,而是微服务开发领域包含设计思想、各种框架的技术平台。 前面一个是纯服务端的单服务开发框架,一个是微服务的技术平台,而 Andorid 应用是纯客户端、更偏重于交互的,它有自己的框架,不可能用到前两个。 |
22
ShirleyLuo OP @kile 那么,像我现在就是这种,自己一个人开发的话,(应该不算一个人开发吧,我也不知道算不算,就是有一个单片机,有一个服务器的,有一个框架的,然后就是其他硬件的,),然后,我就是做功能显示这种,反正应该也不用 mvp 比较好吧?
|
23
ShirleyLuo OP @passerbytiny 就是说不只是我提到了那些框架,关键是我不懂需要用到框架吗以及会用到哪些框架,因为我自己就是一直没感觉用到什么框架,但是看了大家的回答之后多少也了解一些了,安卓本身就是一个框架吧,然后就是模式,我还没用到,就是自己一个类,或者两三个类写到底
|
24
MushiUta 2018-12-10 15:43:08 +08:00
推荐 Google Android Architecture Components。刚刚入行不用太在意架构,AAC(Android Architecture Components)主要是里面的 room,livedata,viewmodel 这些真的挺好用的。网络请求现在基本 retrofit 没得跑了,但是 rxjava 也不建议一开始就去接触。现在大部分用 rxjava 也就是和 retrofit 一起做个网络请求,livedata 完全可以替代。
|
25
MushiUta 2018-12-10 15:43:56 +08:00
哦。还有,能上 kotlin 就上 kotlin 吧。真是棒~
|
26
ryougifujino 2018-12-10 15:51:01 +08:00
@MushiUta #24 官方的 Architecture 里面,入门推荐这个 https://github.com/googlesamples/android-architecture/tree/todo-mvp/,里面是最简单的 mvp 模式,附带一个 repository 模式,可以很好的理解分层的思想,也没有用到其他多余的框架( rx 之类的)
|
27
MushiUta 2018-12-10 15:56:54 +08:00
@ryougifujino 主要是 mvp 小团队真的很难用,真要说我还是比较推荐 mvvm 的 demo [todo-mvvm-live-kotlin]( https://github.com/googlesamples/android-architecture/tree/todo-mvvm-live-kotlin/) 或者 [todo-mvvm-live]( https://github.com/googlesamples/android-architecture/tree/todo-mvvm-live/)
|
28
cysionliu 2018-12-10 17:57:56 +08:00
前提:小团队。
界面:用原生 xml,不用 databinding 那套; 数据:json 对应类,业务逻辑,扔到 M 层,就如 pojo,后台 controller ; 视图逻辑,扔 C 层(安卓可认为 activity,fragment ); 交互: 可以直接 C 层直接与 M 层交互,俗称 MVC ; 觉得耦合多,就加一层 P(MVP),面向接口编程,但建议别用 contract 那套,接口爆炸,可以只让 P 层面向 V 的接口,因为相对来说 json 结构变化不多,这样会简单点,相当于拿部分耦合换人为约定。 然后想用什么功能,就上第三方,比如网络 okhttp+retrofit,图片 glide 或者 picasso。。 若觉得数据需要多次在客户端进行转化操作并涉及多次异步,可以考虑 rxjava。 找 xml 里 View 的引用,是个问题,建议上 kotlin 的 android-extensions,若实在不想换语言,那就上 butterknife。 要用 V7 包那套(现在新工程都自带了),列表用 recyclerview 可以从这找第三方 https://android-arsenal.com/tag/0?sort=created&category=1 |
29
huruwo 2018-12-19 11:56:58 +08:00
gradle 不是吗
|
30
ShirleyLuo OP @huruwo 应该也是 吧,只是我自己不熟悉,总感觉,安卓没怎么配置,而且,目前公司用的是 ec,所以自己也用的 ec 没用 as,233,见笑了
|