首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一次实战爱上

从上次『

Android Device Monitor 权限笔记

』中提到我由于广告机项目又转回Android原生开发了,最近由于项目再次变动,我又重回手机App开发了,经过与Boss的深入交涉,我终于成功把App的开发方式也从 React Native 改回原生,暗喜。

毕竟,如果使用 React Native 进行开发,团队里不仅需要有 React Native 专家,还需要有Android专家和iOS专家。

而现实是,移动客户端开发目前就我一个人,任重而道远,但是上头一直催着App上线,所以还是回到了我所熟悉的原生Android领域,毕竟前段时间『Airbnb』也宣布放弃继续使用 React Native进行开发了,我们这群渣渣就不要做炮灰了好么。

为了让项目更快上线,App将采用原生Android结合WebView配合已有的基于微信平台Web项目实现,登录页面由原生来完成,因为原微信平台项目是可以直接通过微信授权登录,在App上我们则需要使用手机号码进行登录,并希望能使用SharePrefences存储登录状态,登录成功后则使用WebView打开网页。

这期间当然需要将登录信息发送到后台了,既然是使用HTTP协议访问网络,原生就提供了『HttpURLConnection』的方法,按照之前在『第一行代码——Android』中所学的内容,依葫芦画瓢,书中的示例是使用GET请求获取数据,而为了安全,我希望使用POST向服务器提交数据。

根据书上的方法,我写出了如下代码:

这里省略了部分代码,包括得到数据后的解析以及校验等等,代码并不多嘛,但是实际上跑起来就是,服务器上没有接收到我提交的数据。

几经周折,终于把残缺的代码补全了:

我认为最重要的可能是这句:

因为书中没有提到,网上大多数的资料也没有提到,我就不知道他们是怎么连接的了,当我把这句代码补上后,App才成功和服务器建立起连接。

另外下方关于服务器响应码的那段代码也是必须的,得到响应码,判断与服务器连接是否正常,没了这个判断就不能和服务器进行数据的交互。

这样看下来,跟一开始的“代码并不多”差距就太大了,代码冗余晦涩,阅读起来十分痛苦,于是便打算对这段代码进行重构。

之前阅读『第一行代码——Android』时有学习过『OkHttp』,所以我就打算使用它来代替『HttpURLConnection』。

为什么我虽然从一开始就知道这个网络通信库却不使用呢?因为前文也提到,我以为『HttpURLConnection』的代码量相比『OkHttp』并没有多出多少,但是出现了如此巨大的Bug,修复完成后代码量居然增加了一倍,所以必须转投『OkHttp』的怀抱。

首先在项目中添加『OkHttp』库的依赖:

为了使其保持最新版本,最好登录其官网或者其Github项目主页进行查询,当然,添加依赖时『Android Studio』内也会有提示。

官网地址:https://square.github.io/okhttp/

Github主页:https://github.com/square/okhttp

然后就可以在项目中使用了,将上方的代码进行改造,就可以得出一段简洁的代码:

真的太好用了有木有!如此清晰简单的代码就完成了上面的内容,并且还十分容易获取从服务器返回的数据,方便我后面对其进行解析,简直要爱上它了!

虽然后来由于原生登录页面和原有的Web项目兼容起来十分困难导致后台的session一直写不进去,我们最终选择了连登录页面也使用网页加载。

但这也是我做开发以来第一次与服务器进行数据交互,跟团队的合作还是挺好的,成功跟服务器进行数据交互之后也对HTTP协议在Android项目上的应用有了更深的了解,毕竟之前学的时候只是使用开发用的PC搭建一个简陋的Web服务器进行交互,学到的东西也十分有限,所以也导致了在实战的时候错误地估算了『HttpURLConnection』的使用成本而没有选择更好用的『OkHttp』,不过这一次实战,真的要对它崇拜得五体投地。

再说件小事,我们项目的后台本来是使用Node.js写的,上面的领导现在要求我们改用Java,我们的3位后端工程师一个个离职了。

首先离职的那位大佬在这里工作了9个月后在广州拿到20万年薪加股份的Offer,紧接着同租的大佬也在深圳拿到了月薪12K的Offer,至于第三位大佬,我没有过问,据说是拿到了游戏公司的Offer,相信也是达到了不错的水平。

作为初来乍到的菜鸟我也是羡慕至极,之前在跟他们劈酒的时候有少许交谈,目前来说Android开发这条路可能真的越来越窄,毕竟App市场饱和,红利已过,即使转Java开发也似乎得不到很好的发展,Node.js这个前后端万金油似乎真的是一条不错的出路,看来真的要考虑一下学一学,虽然感觉Android才是我的真爱,但总不能一条路走到黑吧,给自己留一条后路也是不错的,技多不压身。

Like it or not

I am here

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180826G00C5I00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券