Android 天气APP(三十五)修复BUG、升级网络请求框架

二、数据访问bug


在之前的网络请求中,每一次请求都会执行两次,这个问题由一个读者发现,和我反应出来,我更换了网络框架,其实就是在原来的基础上增加了RxJava的使用,新的网络框架在源码中的mvplibrary模块的newnet包下。

在这里插入图片描述

这个框架其实我单独写过一篇文章来介绍,文章地址如下:

Android OkHttp+Retrofit+RxJava搭建网络访问框架(含源码)

想要详细了解里面过程的可以看看,不打算了解的,直接复制代码到使用的地方就可以了,针对于这个框架来说,改变的地方相对于原来的框架有一些区别,但总体区别不大,就拿主页面的请求来说明一下:

在新的框架中是由NetworkApi去构建网络请求的,在之前是通过ServiceGenerator,这里就要做修改。

新框架需要在Application中进行一个初始化,这和之前有所不同,在app模块下新建一个NetworkRequiredInfo类,实现INetworkRequiredInfo,代码如下:

/**

  • 网络访问信息

  • @author llw

*/

public class NetworkRequiredInfo implements INetworkRequiredInfo {

private Application application;

public NetworkRequiredInfo(Application application){

this.application = application;

}

/**

  • 版本名

*/

@Override

public String getAppVersionName() {

return BuildConfig.VERSION_NAME;

}

/**

  • 版本号

*/

@Override

public String getAppVersionCode() {

return String.valueOf(BuildConfig.VERSION_CODE);

}

/**

  • 是否为debug

*/

@Override

public boolean isDebug() {

return BuildConfig.DEBUG;

}

/**

  • 应用全局上下文

*/

@Override

public Application getApplicationContext() {

return application;

}

}

然后在WeatherApplication中完成初始化。

在这里插入图片描述

还是一个地方就是ApiService的修改,之前用的是Retrofit2的Call来进行回调,现在是使用RxJava的Observable来进行。

在这里插入图片描述

因此每一个接口都需要更改。下面就用一个最简单的页面来说明:欢迎页面。

SplashContract,首先是这个页面的订阅器。

在这里插入图片描述

这是一个获取App版本号的请求,修改的内容如上图所示。

回调接口如下图:

在这里插入图片描述

页面中使用。

在这里插入图片描述

那么相对于这一个接口,其他的接口修改方式一样,如果还不清楚可以查看我的源码。在我修改网络框架之前,我特意保存了一个之前的未修改网络框架的源码。之前的源码地址如下:GoodWeather

这个下载是0积分,可以直接下载,你现在从GitHub上看到的代码是修改了网络框架之后的。

好了,对于网络框架的的修改就说到这里。

三、程序崩溃


程序崩溃对于App来说就是大问题了,因此要在开发时做反复的测试,这一点我有所疏忽。这个问题是我在调试的时候发现的,崩溃的起因源自于App中讯飞语音的使用,这和讯飞没啥关系,完全是我使用的问题。

问题出现的原因就是讯飞语音识别是弹窗的调用,context重复使用,导致当第一个页面调用了语音识别之后,第二个页面调用时引用的context还是之前的,但是之前的页面销毁了,则弹窗找不到显示的页面,页面崩溃报错。解决方法是,每次调用弹窗时传入当前页面的context,这样就可以避免了。

在这里插入图片描述

然后是调用的地方。有三处,如下图所示,一一修改即可。

在这里插入图片描述

四、小米8上的崩溃


此问题由一个读者发现,问题出现原因是在小米8手机上,运行到主页面时会崩溃,但是在我自己的手机和测试机上都不会崩溃,这个就很奇怪了。

这是当时的报错信息:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值