《第一行代码(第2版)》中碰到的问题

1.简介

刚书撸完了,总结一下出现的问题,为其他进坑的朋友节省一下时间。当然了,初学android可能解决方法不是太好哈。

(1)《第一行代码(第2版)》出版至今已过了两年多。有些api无法使用了。

(2)书中使用的是android7.0,由于种种原因我使用的是android8.0。有些代码在7.0可以运行,在8.0无法运行。

(3)书中使用的是gradle2.x,我使用的是gradle3.x。语法发生变化。

2.问题

2.1 “第3章 软件也要拼脸蛋——UI开发的点点滴滴”

在书的“3.6.1RecyclerView基本用法”中,需要在gradle中引入RecyclerView。

书中是这样引入的:

compile 'com.android.support:recyclerview-v7:24.2.1

compile是gradle2.x中的语法,在gradle3.x中被弃用,修改为implementation(ps:参考链接)。同时由于我使用的是android8.0,所以需要升级recyclerview的版本,修改为:

implementation 'com.android.support:recyclerview-v7:26.1.0-alpha1'

2.2 “第5章 全局大喇叭——详解广播机制

在书的“5.3.1发送标准广播”中,需要发送自定义广播并接受。

Intent intent = new Intent("com.android.broadcasttest.MY_BROADCAST");
//标准广播
sendBroadcast(intent);

android7.0可以这样发送自定义的广播,并且接受自定义的广播,android8.0中就不行了。

android8.0为了管理系统和节约电量特别针对广播和服务发送intent的方式启动做出的改变,也就是说广播和服务不能随意收intent了,要对广播和服务更精确的指向,所以在创建intent的时候,我们需要指定我们的广播和服务的包名加类名,为的就是精确。(ps:参考链接)。

Intent intent = new Intent("com.android.broadcasttest.MY_BROADCAST");
intent.setComponent(new ComponentName("com.android.broadcasttest",
            "com.android.broadcasttest.MyBroadcastReceiver"));
//标准广播
sendBroadcast(intent);

2.3 “第6章 数据存储全方案——详解持久化技术”

在书的“6.4.1创建数据”中,需要使用adb查看android模拟器中SQLlite的表是否创建成功,总是说我“permission denied”,一直没弄成功,到现在也没弄成功,不过我觉得无所谓,反正我能查询出来不就行了?对吧。

解决方案:https://www.jianshu.com/p/7821b8e1b414

2.4 “第6章 数据存储全方案——详解持久化技术”

在书的“6.5.2配置LitePal”中,需要使用LitePal框架(ps:书的作者写的开源框架,牛逼!)查询数据库。

需要修改build.gradle,由于我使用的gradle3.x,需要将:

compile 'org.litepal.android:core:1.3.2'

 修改为:

implementation 'org.litepal.android:core:1.3.2'

原因同2.2

2.5 “第8章 丰富你的程序——运用手机多媒体”

在书的“8.2.1通知的基本用法”中,需要使用通知,由于android8.0中通知引入了渠道的概念,所以书中android7.0的通知代码无法使用了。如何修改,我参考的是书的作者的博客https://blog.csdn.net/guolin_blog/article/details/79854070

2.6 “第14章 进入实战——开发酷欧天气”

书中使用的和风天气apiv5版本,新注册的用户无法使用了。

解决方案一:

继续使用老用户的v5api,虽然新注册的用户无法使用v5api,但是老用户还是可以使用的。

下面是我收集的老用户的和风天气v5api

http://guolin.tech/api/weather?cityid=CN101130101&key=bc0418b57b2d4918819d3974ac1285d9

https://free-api.heweather.com/v5/weather?city=CN101091101&key=32d1c829ed7d483086f4f5b4d5947cef

http://guolin.tech/api/weather?cityid=CN101010100&key=fb0e22d7b17f4bd0947c2e0c0045093d

http://guolin.tech/api/weather?cityid=CN101240201&key=ba9079704cc44512bb3af201ef10af15

http://guolin.tech/api/weather?cityid=CN101270101&key=9618c9b7080b4638a16fca8687bf9a60

http://guolin.tech/api/weather?cityid=CN101010100&key=28c01281607a4a9b92195626fb49a4a1

http://guolin.tech/api/weather?cityid=CN101010100&key=f35f596dcb4749be8af6f71d3ef3f332

只需要使用后面的key即可。

解决方案二:

使用和风天气v6api,但是v6的数据结构与v5的数据结构不同,需要自己修改一下。网上有一篇讲解的,不过我找不到了。

3.总结

(1)看书学习要学会取舍。在使用adb查看android模拟器SQLlite数据库时,一直无法查看。一下午时间基本都赖在这了,再给我一次机会我会直接放弃掉,现在回头想想就算弄成功了,也没什么意义。虽然说,攻克一个难题会有很大的提升,在解决问题的过程中也能学到很多,但是如果拿这时间继续向下学习,有时候收益更大。

(2)英语。有些问题中文搜索不到,真得google一下。我英语不行,在全英文页面,我只能选择右键“翻译成中文”,效率很低,翻译效果也略差。要学习英语

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值