说说Android x包的那些事

前言

项目中引用了一个第三方图片选择库,之前使用一直没有问题,在最近查看后台崩溃记录的时候,

发现有一个异常出现的频率很高,最后查看详细信息,发现只有Android 10的版本才会出现此问

题,最后去github上查看issuse,发现这个问题已经修复了,于是我就尝试着升级第三方库的版

本,结果升级和本地项目冲突了,最后又仔细去看,发现是因为他们的最新版本已经迁移到

Android x包了,我要想继续使用他们的库,就只能迁移我本地的版本,迁移也还是很简单的,整

个过程只用了半个小时,但是处理问题却用了足足两天时间,下面我来说说遇到的问题:
一  国际化语言切换失败

升级之后发现在切换多语言的时候无效,代码也一直还是原来的,没有做过任何修改,但是设置了

新的语言之后呢却不生效,也就是这个问题困扰了我一天,绞尽脑汁代码一遍又一遍地读,却还是

没有发现问题所在,最后发现我有两个activity设置语言之后是生效的,仔细查看是因为这两个

activity是继承至 android.app.Activity,而我其他的页面却是继承至 AppCompatActivity,于是就新

建了一个项目,将设置语言的代码复制过去,发现设置了语言还是不生效,这就让我越来越摸不着

头脑了,同样的代码上一个版本还是生效的,突然发了一个新版就不起作用了?几乎都要放弃了,

此时我的脑海里也不断地浮现出一句话“我是否适合干Android呢?”,无奈在自己所在的一个

Android技术群里去资讯这个问题,结果根本就没人解答,就是一大堆人在闲聊,好好的技术群聊

的却是些和技术毫无关系的话题,好吧我放弃了!最后到了下班也还没有确定问题所在,以至于晚

上吃饭都食之无味,味同爵蜡,自己整个一晚上情绪都很低落,晚上睡在床上仔细想了一下今天的

整个过程,突然想到今天还做过一件事,那就是迁移了Android 包,心想是不是因为和这有关系

呢,是不是因为继承的activity是Android x包下面的呢,于是就抱着这一点希望在一整天的疲惫下

进入了梦乡,早上来的第一件事就开始打开项目查看继承的activity 确实是继承至Android x包下面

的AppCompatActivity,马上就觉得自己离真相不远了,于是修改继承包,重新导入

android.support下面的activity,重新编译运行之后,发现生效了,此时自己的心情真是难以平静,

如释重负,双手脱离键盘,捂在脸上,久久不能平复。但是心想自己的项目已经不能在回退到

android.support了怎么办呢,此时刚获得的喜悦瞬间跌落低谷,在时间的驱动下又开始想,于是又

想既然继承AppCompatActivity不管用,那么就继承其他的好了 直接继承至activity如何呢,试了一

下也可以,但是我的项目里面确是不能继承activity的啊 !因为里面有fragment,那又继续尝试,

那就继承FragmentActivity吧,抱着尝试的心态试了一下,结果还真行,于是赶快修改自己项目的

baseactivity继承至FragmentActivity,运行之后,果然有效,至此这个问题用了我一天的时间终于

解决了,但是我又迎来了新的烦恼,为什么自己那么菜呢,这么简单的一个问题为什么花费了这么

多时间了,为什么继承AppCompatActivity就不行,而继承FragmentActivity就可以呢,结果点进去

查看源码,发现两个activity使用的context引用是不一样的,继承关系也不一样, Android 7切换语

言是通过重新更新context而达到修改语言的目的,而恰好AppCompatActivity里面更新context的方

法已经被重写了,不能重新创建,于是就没法更新。导致设置语言无效,好了这个问题就到此结束

了。
二  广播注册接收失败

项目提了一个新的需求,需要监听用户按下home键以及多任务键,好嘛,我说这个简单分分钟给

你搞定,结果一通代码写下来之后发现不起作用,这就把人尴尬了,脸被打的啪啪的,试了很多方

法,百度发现我写的和网上的没什么区别,这就奇了怪了,于是把自己的代码删了,复制一份网上

的,发现还是不行,这下是没辙了,心想是不是手机版本太高,被厂家做了处理,于是找来了一个

三年钱的手机,Android 6.0的,发现也还是不行,最后发现我使用的是

LocalBroadcastManager.getInstance(mContext).registerReceiver,而这个包是Android x底下的,

此时心理已经在萌生对Android x的怀疑了,在新项目中继续监听,发现也不行,噢 忘记修改导包

了,于是修改到android.support包下面,发现可以,原来又是Android x的问题,这两天是怎么了

感觉自己和Android x杆上了,无奈我的项目已经导入了Android x没法继续使android.support包

了,于是就更换注册广播的形式,不用本地广播了,就用全局的注册了,

mContext.registerReceiver,发现是没有问题的。

还有几个问题,但是都不怎么常用,这里就不列举了。

最后 可能大家会说既然第三方有问题,那你为什么不自己写呢,我想说的是在小公司时间是不允

许你来造轮子,也不是人人都有那个能力造轮子。个人意见,说的不对 请轻点喷!!

好了也不多说了,这里主要就是就是想说我们在遇到问题的时候,急是在所难免的,但是急也是解

决不了的,自己把出现问题的情况在脑海里重新复盘一下,可能就会发现些蛛丝马迹,可能就是因

为没有这点蛛丝马迹导致自己和问题越走越远,希望这篇文章对大家有所启发,文章写的不好,大

多是废话,就当是自己记录自己的成长过程吧!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值