Activity界面渲染完成后预处理问题

Activity界面渲染完成后预处理问题

程序本身就是方便用户生活的,不得不说,app的出现让人们的生活之需要动动手指就能完成以前跑断腿的操作,但是今天的这个预处理,却仍我感觉到丈二和尚摸不着头脑,我们一起来瞧瞧:
事情呢,是这样样子的,正常情况下:
- 订单列表
- 列表里item 点击跳转到详情页
- 详情页面里有个按钮,点击这个按钮会弹出一个评价的弹窗
本来,这样一套流程走下来来是没有任何问题的,但是新的需求是,在新开辟的A界面里,点击支付按钮,支付成功后,主动跳到详情页面,并且,并且,打开弹窗!

微信截图_20181224124838.png

但是,方法总比困难多吧,多百度多思考,这不,解决方法已经出来了:
-首先正常的逻辑依旧是原来的流程。
-我们要做的就是在Activity加载完毕后自动把popowindow 给显示出来
-需要注意的是,在正常显示popwindow 的逻辑里我们要做一些判断,这点等下看代码

那么我们怎么判断Activity是否加载完毕呢?

通过生命周期吗?诚然,这是个方法,可是生命周期未免有些太复杂,有些时候走的顺序又是不一样的,所以不好控制,那么我们将采用一种简单明了的方法 onWindowFocusChanged ,这个方法里返回一个布尔类型的值,true 表示Activity已经拿到焦点,也就是界面已经渲染完毕,false表示Activity还在加载中,这个时候是不能弹窗的。

  override fun onWindowFocusChanged(hasFocus: Boolean) {
        super.onWindowFocusChanged(hasFocus)
        if (hasFocus) {
            if (!isShowIng) {
                if (showPopWinFlag == 10090) {
                    //自动打开弹窗
                    isShowIng = true
                    showPopwinComment(mOrderId)
                }
            }
        }
    }

看代码,这里我做了三层判断,来完成自动弹窗的顺利弹出。

  • hasFocus ,判断Activity是否获取焦点,这是个关键,只有获取焦点了才能继续往下进行。
  • isShowIng ,这个变量是我在Activity一开始就声明出来的,默认值是false,我在正常的流程里,点击事件弹出弹窗的时候置为true
                    orderCommet.setOnClickListener {
                                         //评价订单
                                         isShowIng = true
                                         showPopwinComment(order_id)
    
                                     }
    
    

这里主要就是防止在Activity渲染完成后,一直走onWindowFocusChanged 方法导致popwindow 关闭后依旧弹出的问题。

  • showPopWinFlag 则是支付完成后跳转过来表示要打开弹窗的标识。
  • 当然在这些都顺利弹出后,别忘了,再把 isShowIng = true 置为true.
    至此,一个完整的预加载弹窗就是顺利搞定了。
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容