QuickStartActivity是什么东西呢,顾名思义就是快速启动Activity。
那此组件有什么特点:
接管onActivityResult,根据目标Activity自动生成requestCode,并且以回调的方式从上一个页面返回数据,从而无需自己重写onActivityResult,节省了些体力,代码量也变少了。
接下来我们看一下正常写法:
1、启动Activity
val intent = Intent(this, RvListActivity::class.java)
val requestCode = 0x123
startActivityForResult(intent, requestCode)
2、接收数据,然后处理业务逻辑
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when(requestCode){
0x123->{
}
}
}
这种写法需要定义requestCode,一般App里面页面上百个是很正常的,笔者使用时总是担心使用requestCode重复出现问题,并且每次都需要重写onActivityResult,虽然代码不多,但是如果写得次数多了,依然很难受。
所以,请看下QuickActivity的写法
QuickActivity.Builder(this@MainActivity, RvListActivity::class.java)
.addParams("TITLE", "这是标题")
.addParams("ID", "123")
.startActivity { resultCode, data ->
//do something
//下一个页面将在这里返回哟
}
//如果有一些已经定好的数据,可以直接传入,支持Intent与Bundle
val intent = Intent()
intent.putExtra("TITLE", "这是标题")
val bundle = Bundle()
bundle.putString("ID", "123")
QuickActivity.Builder(this@MainActivity, RvListActivity::class.java)
.addParams(intent)
.addParams(bundle)
.startActivity()//不需要返回值,不传入监听即可
是不是比正常写法简洁许多呢,在哪里需要返回值,直接传入一个监听即可,不需要则不传,还去掉了让人恼火的requestCode。还将数据分类返回了,逻辑一下子清晰了。
接下来就看下配置吧,非常简单
只需要在基类Activity中接入onActivityResult即可,一行代码的事儿。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
QuickActivity.onActivityResult(requestCode, resultCode, data)//加上这一行
}
推荐使用gradle接入
implementation 'org.quick.android:quick-component:latest.release'
统一初始化放在Application中:
QuickAndroid.init(this)
好了,到这里就结束,好东西那当然要分享了,马上告诉小伙伴我发现了一个很酷的东西吧。
QuickAndroid系列全家桶