用代理获取startActivityForResult结果

用代理获取startActivityForResult结果之前RxActivityResult 这个库和RX绑定太深,好多人其实并不喜欢RX的方式,而且引入RX也容易导致开发者乱用,如果不能很好的进行内存管理的话会导致内存泄露。考虑到界面回传的业务场景中对值的aop处理需求并不是必须的,新写了一个库QQResult 将界面回传值和AOP转化分开

尊重他人的劳动成果,转载请标明出处:blog.csdn.net/gengqiquan/… 本文出自:【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依赖方式请看github.com/gengqiquan/…

有什么建议的可以留言喔

如果我的博客对您有帮助,请留言鼓励下或者点个赞吧!

我建了一个QQ群(群号:121606151),用于大家讨论交流Android技术问题,有兴趣的可以加下,大家一起进步。

今天的文章用代理获取startActivityForResult结果分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/15159.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注