用代理获取startActivityForResult结果
Posted gengqiquan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用代理获取startActivityForResult结果相关的知识,希望对你有一定的参考价值。
尊重他人的劳动成果,转载请标明出处:https://blog.csdn.net/gengqiquan/article/details/84062213, 本文出自:【gengqiquan的博客】
之前RxActivityResult 这个库和RX绑定太深,好多人其实并不喜欢RX的方式,而且引入RX也容易导致开发者乱用,如果不能很好的进行内存管理的话会导致内存泄露。考虑到界面回传的业务场景中对值的aop处理需求并不是必须的,新写了一个库QQResult 将界面回传值和AOP转化分开
调用方式:
QQResult.startActivityWith(MainActivity.this, SecondActivity.class)
.put("key", "笑一个")
.result(new IResult()
@Override
public void result(Intent intent)
tv.setText(intent.getStringExtra("msg"));
@Override
public void cancel()
);
回调参数内部用代理类进行了封装,提供多个参数方法,可以根据自己的需要来选择,
依旧是利用Fragment作为代理。由于不再使用RX了。就直接采用代理的方式,框架内部主动释放资源。
提供了kotlin的拓展方法
startActivityWith<ThirdActivity>(
"key" to "哭一个", "number" to 100
).result(
Toast.makeText(this@SecondActivity, it.getStringExtra("msg"), Toast.LENGTH_SHORT).show()
)
提供一个转换库来将值转换为RxObservable
QQResult.startActivityWith(MainActivity.this, SecondActivity.class)
.put("key", "笑一个")
.transform(RxResultAdapterFactory.create())
.subscribe(new Subscriber<Intent>()
@Override
public void onCompleted()
@Override
public void onError(Throwable e)
@Override
public void onNext(Intent intent)
tv.setText(intent.getStringExtra("msg"));
);
完整的示例代码、源码及gradle依赖方式请看https://github.com/gengqiquan/QQResult
有什么建议的可以留言喔
如果我的博客对您有帮助,请留言鼓励下或者点个赞吧!
我建了一个QQ群(群号:121606151),用于大家讨论交流android技术问题,有兴趣的可以加下,大家一起进步。
以上是关于用代理获取startActivityForResult结果的主要内容,如果未能解决你的问题,请参考以下文章
告别onActivityResult ,用代理实现Rx方式获取startActivityForResult结果
告别onActivityResult ,用代理实现Rx方式获取startActivityForResult结果