抬头仰望星空,是否能发现自己的渺小。

伪斜杠青年

人们总是混淆了欲望和理想

记一次凌晨上线改代码折腾很久的低级问题

在这周的某一天需要上线公司产品,由于环节过多,测试人手不够,移动端作为最后一环,来到了凌晨,凌晨测试时后台数据异常导致了APP崩溃,同时市场部说在上线后几天也不一定有数据,临时再增加了容错处理以及对应状态。作为 Android 组内一员,大家都需要追加对应模块的状态,我也不例外,而且这个需求也很简单,布局也不用写,大家都是用同一个状态布局。但事故发生了:

状态切换原理无非就是 view 的 visible 与 gone,另外两个同事的状态切换没问题,我的状态切换不生效,由于是凌晨,大家急着下班,大家一起看了很久没找到原因(从代码逻辑到 view 测量等等一系列环节分析无果),另一个同事便用他的方式写了一套提交了,事后我再看,其逻辑本质并无不同。

我知道这一定是一个非常简单的问题导致的困境。果不其然,第二天来到公司,继续和同事们看,最终找到了原因:

整个界面的布局大概是这样的:

<Layout>
    <Module1/>
    <Module2/>
    <Module3/>
    //my code
</Layout>

每个 module 都是一个 view 并且做了生命周期监听回调,所以他们都是在他们自己代码里做状态处理,而我是在最顶层的 view 中做状态处理,大家都是 使用 <include layout="status.xml"> 形式,我也一样。

就是因为我也一样,所以 view ID 与他们相同,而即便顶层 view 看不到他们 layout 相关的内容,但他们的 status 布局依旧是在顶层 view 中,导致我每次获取到的 view 都是他们的状态布局,从而无法真正操作到自己的状态布局,最后换了一个 view ID 就正常了,而那个同事,阴差阳错的 也就是换了一个 ID。。。

自己把自己坑了,复制别人布局代码,最需要注意的就是 ID ID ID !!!,教训。


本站由以下主机服务商提供服务支持:

0条评论

发表评论