今日感悟

20189月13号 洪洋公众号
原文:避免使用onActivityResult,提高代码可读性

先是看到吐槽startActivityforResult和onAcitivityResult分开,导致逻辑代码分开,对于阅读代码不利,希望能在startActivityforResult时有个回调,在跳转处就处理好返回逻辑。

我就根据文章实现一个OnActivityResultManager,其实也就是一个回调而已,和我们平时写的监听一样,还行没什么难度。其实就是用OnActivityResultManager将startActivityforResult和onAcitivityResult放在一起处理。详情见

写完之后我就想起来前几天刚刚学习记录easyPermission,应该道理精神一样。

然后作者自己反吐槽一波这种方式不好啊,需要在baseActivity中设置监听,不够自动啊(其实我觉得已经可以了),但是此时我突然想起前几周看到一篇Yessyan的文章我一行代码都不写实现Toolbar!你却还在封装BaseActivity(看来帅的都是什么yan什么的,hongyang,jessyan,yangjm...习惯了),第一次看看什么鬼都不知道。这边文章最后会涉及到运用applicationLifeCallBack来统一重写Acitivity生命周期,来尽量避免baseActivity以防止出现下面的情况

image.png

(不过一般项目中遇见的概率偏低,所以大多数还是用baseActivity)

行行,你说不秀就不锈。

那么作者又引导了RxPermissions想要借鉴这个开源库的做法,因为动态权限大体就是先调用requestPermissions方法,然后授权的结果要到onRequestPermissionsResult中处理,简直和startActivityForResult如出一辙。(作者原话)
如果Permission可以那么startActivityForResult肯定也可以。可以先移步到Permission看下源码思想。

用一个不可见的fragment特性可以做很多骚操作,比如glide的生命周期管理也是用了这个特性
使用fragment生命周期方法替代Activity方法,扩展性不错。还有RxLifeCircle应该也是一样的思路,(反正所有界面不方便做的操作都可以交与fragment来操作)待验证

说到代替生命周期,这与jessyan的思想就有点相似,在他的文章里,可以通过在app里注册监听
在为全局的界面做处理,比如不需要再baseActivity的oncreate里往activityManager里加activity,直接在这里做

当然需要提一点的是:以上或者以下提的都是一个思想,就像mvp mvc,并不是项目中就只能死用一种方案,应该根据不同情况来选择不同的技术方案


在Activity(fragment)中也可以调用getsupportFragmentManager(getsupportChildFragmentManager)来regist片段(子片段)的生命周期

你可能感兴趣的:(今日感悟)