为什么 Android 设计这么复杂?

2019-08-11 15:54:23 +08:00
 Cheez

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

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

15498 次点击
所在节点    Android
36 条回复
wdv2ly
2019-08-12 07:30:49 +08:00
拿平台和语言比?那你可以用 py 开发 android,试试复杂度
jaskle
2019-08-12 08:05:45 +08:00
规范意味着复杂,随意意味着简单,怎么能跟一个强类型语言比这个……所以我选择 nodejs
HenryW
2019-08-12 08:08:15 +08:00
语言库的实现和使用逻辑跟系统有什么关系…
pythonnoob
2019-08-12 08:17:20 +08:00
@jinliming2 python 并不是弱类型,js 才是
itskingname
2019-08-12 08:20:17 +08:00
@jinliming2 纠正一下,Python 是动态强类型语言。
godoway
2019-08-12 08:27:18 +08:00
与其说复杂,不如说为这个库做得这么简单,
hbolive
2019-08-12 09:07:45 +08:00
PHP 保存 cookies 只要一句话,PHP 骄傲了吗?
其实吧,也没那么难.jpg
yidinghe
2019-08-12 09:12:26 +08:00
unforgiven
2019-08-12 09:41:49 +08:00
@luozic 这个和语言都没关系,一个是自己实现一个是 call 别人的 api 当然代码量不一样
zagfai
2019-08-12 11:00:18 +08:00
@wakan190 ???你確認自己用過 python ?
xloger
2019-08-12 11:25:22 +08:00
这是封装程度不同的原因。楼主所说的保存 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 封装的简易库,可以实现一行代码实现,内部原理也跟上面的实现差不多。

所以我觉得,是应用场景与目标不同,不存在优劣与繁琐的问题。
lwj871731342
2019-08-12 12:25:48 +08:00
SharedPreferences 存一下...对 OkHttp 来说也只是个设置的事吧...
AndroidEngineer
2019-08-12 13:24:56 +08:00
浏览器帮你做的 cookie 操作,客户端你要自己实现,这就是区别
nnnToTnnn
2019-08-12 13:58:33 +08:00
先不说 okhttp,这个库提供很多方便的地方,其次我觉得你这个问题应该换下,改成:“为什么我的技术这么差” ,你这个功能说实话无非就是 socket 编程,Java 只是重于设计,轻实现的
madtcsa
2019-08-12 14:18:15 +08:00
Android 设计的很复杂么?没觉得?碎片化的坑倒是多。
mouyase
2019-08-12 15:29:13 +08:00
觉得代码复杂那是语言和库的锅
觉得数据存储复杂那是平台的锅
不管怎么样就是复杂那是你的锅

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/590939

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX