首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Android

为什么 Android 设计这么复杂?

  •  1
     
  •   Cheez · 41 天前 via Android · 6232 次点击
    这是一个创建于 41 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我想在 APP 登陆,保存一下 cookies,都得实现好几个类。我在 python 和 node.js 都只需要几十行代码。

    我用的是 okhttp,是因为这个库本身比较复杂吗?有没有像 python 的 requests 一样轻松简单的库

    36 回复  |  直到 2019-08-12 15:29:13 +08:00
        1
    eminemcola   41 天前
    首先 OKHTTP 和 Android SDK 无关…
        2
    pdog18   41 天前
    okhttp 设置 cookiejar 就好了,然后看你想如何保存,这个需要你来自定义,其实也可以几行代码就好了。
        3
    yinzhili   41 天前
    这是因为 java 语言相对比较繁琐
    你要去用 ObjectiveC 做 iOS 开发也会发现,复杂度也是高于 py 和 node 的,到时候岂不是要来抱怨 [iOS 设计这么复杂]
        4
    iPhoneXI   41 天前 via Android
    试试 kotlin ?
        5
    janus77   41 天前 via iPhone
    你说的复杂是代码行数吗?
    如果是的那怪 java 吧
    如果不是的,只能说明你不熟悉客户端开发的理念
        6
    hoyixi   41 天前
    你说的是一回事吗,Py 和 node 都是服务器端,Android 是客户端

    Web 用浏览器登录,浏览器帮你做了不少工作;如果自己实现客户端,维护一些状态、且和服务器保持一致,当然你得自己写代码
        7
    ochatokori   41 天前 via Android
    其实你只是觉得 java 干嘛都得搞个类和 pyjs 这些动态语言相比麻烦得不是一点(我就是这样
        8
    wakan190   41 天前 via Android
    python 主要面向过程的,会直接些
        9
    HuHui   41 天前
    api 实现的粒度更细吧
        10
    AlvaIM   41 天前
    封装好了的话都不会麻烦, 主要是封装得不行
        11
    locoz   41 天前 via Android
    @eminemcola #1 Python 的 requests 库也是第三方库,也和 Python 标准库无关
        12
    locoz   41 天前 via Android
    复杂不是 Android 的问题,而是 Java 的问题,语言设计者的理念不同导致了 Java 写起来会比 Python 繁琐一些。
        13
    luozic   41 天前 via iPhone
    Java 自己的坑 ,可以试试 kotlin
        14
    lihongjie0209   41 天前
    首先这个和安卓没关系

    其次这是设计理念的问题, 脚本语言适合一次性的简短的任务, 当然直接撸最好了. 稍微复杂的一点的任务, 需要多人维护的, 需要扩展性的, 不管是什么语言都需要 OOP 和设计模式那一套.
        15
    godlovesxcjtest   41 天前 via Android
    保存 cookie 有一个 github 项目,一行代码基本上就能搞定
        16
    BBCCBB   41 天前
    okohttp 只是一个基础库, 你可以用包装了他的库,比如 retrofit 或者 feign.
    就想 python 里的 requests 页包装了 urllib3. 如果你用 urllib3 自己撸,也有很多事情要做.
        17
    YUyu101   41 天前   ♥ 1
    没办法,类多一是写的人爽,思路清晰,二是扩展的人爽,只要继承实现,其他的逻辑都不用动,如果只想简单用用就会很不爽,因为你为了一个小功能而付出巨大的时间成本搞清他是怎么实现的
        18
    Building   41 天前 via iPhone
    正如你所说的,你觉得 Python 和 node.js 比较简单,是因为复杂的别人都在库里帮你写好了。
        19
    jinliming2   41 天前 via iPhone
    Java 强类型,很多地方限制,所以比较繁琐。
    py、js 弱类型,所以相对比较容易实现,把类型推导交给解释器。
    语言面向的方向不同而已。
        20
    MMMMMMMMMMMMMMMM   41 天前
    Java 想要舒服的写代码,要备好一堆 code generator
        21
    wdv2ly   41 天前 via Android
    拿平台和语言比?那你可以用 py 开发 android,试试复杂度
        22
    jaskle   41 天前 via Android
    规范意味着复杂,随意意味着简单,怎么能跟一个强类型语言比这个……所以我选择 nodejs
        23
    HenryW   41 天前 via iPhone
    语言库的实现和使用逻辑跟系统有什么关系…
        24
    pythonnoob   41 天前 via iPhone
    @jinliming2 python 并不是弱类型,js 才是
        25
    itskingname   41 天前 via iPhone
    @jinliming2 纠正一下,Python 是动态强类型语言。
        26
    godoway   41 天前 via Android
    与其说复杂,不如说为这个库做得这么简单,
        27
    hbolive   41 天前
    PHP 保存 cookies 只要一句话,PHP 骄傲了吗?
    其实吧,也没那么难.jpg
        29
    unforgiven   41 天前
    @luozic 这个和语言都没关系,一个是自己实现一个是 call 别人的 api 当然代码量不一样
        30
    zagfai   41 天前
    @wakan190 ???你確認自己用過 python ?
        31
    xloger   41 天前
    这是封装程度不同的原因。楼主所说的保存 cookies,我这边创建 okHttpClient 的相关代码如下:
    val inDiskCookieStore = InDiskCookieStore(XInit.applicationContext)
    private var cookieHandler: CookieManager = CookieManager(inDiskCookieStore, CookiePolicy.ACCEPT_ALL)
    private val okHttpClient = OkHttpClient.Builder()
    .cookieJar(JavaNetCookieJar(cookieHandler))
    InDiskCookieStore 是我自己创建的,cookieJar 和 cookieManager 的作用感兴趣可以自行了解,直接使用 okhttp 自己实现的这两个类即可。而 InDiskCookiesStore 里我做了什么呢,就是继承了 CookieStore 接口,实现了用 SharedPreferences 持久化存储 cookies 而已。

    这个流程复杂么?不算复杂但是对于新手的确是繁琐了点。这个流程有必要么?我觉得是有的,不然一个网络库凭啥帮你实现具体的持久化存储。

    而如果想像其他框架一样简单地一句话调用,网上肯定有很多基于 okhttp 封装的简易库,可以实现一行代码实现,内部原理也跟上面的实现差不多。

    所以我觉得,是应用场景与目标不同,不存在优劣与繁琐的问题。
        32
    lwj871731342   40 天前
    SharedPreferences 存一下...对 OkHttp 来说也只是个设置的事吧...
        33
    AndroidEngineer   40 天前
    浏览器帮你做的 cookie 操作,客户端你要自己实现,这就是区别
        34
    nnnToTnnn   40 天前
    先不说 okhttp,这个库提供很多方便的地方,其次我觉得你这个问题应该换下,改成:“为什么我的技术这么差” ,你这个功能说实话无非就是 socket 编程,Java 只是重于设计,轻实现的
        35
    madtcsa   40 天前
    Android 设计的很复杂么?没觉得?碎片化的坑倒是多。
        36
    mouyase   40 天前 via Android
    觉得代码复杂那是语言和库的锅
    觉得数据存储复杂那是平台的锅
    不管怎么样就是复杂那是你的锅
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2216 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 04:04 · PVG 12:04 · LAX 21:04 · JFK 00:04
    ♥ Do have faith in what you're doing.