zoukankan      html  css  js  c++  java
  • onWindowFocusChanged重要作用(得到/失去焦点call) 、

    onWindowFocusChanged重要作用

    Activity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。
    译注:从onWindowFocusChanged被执行起,用户可以与应用进行交互了,而这之前,对用户的操作需要做一点限制。

    比如我们在做OTT项目时候,我们就是在这onWindowFocusChanged来获取主按键的具体位置和宽高的,而在其他标准生命周期的接口中调用都是获取不到的,比如在onResume,onStart中都获取不到信息。

    这个onWindowFocusChanged指的是这个Activity得到或者失去焦点的时候 就会call。。
    也就是说 如果你想要做一个Activity一加载完毕,就触发什么的话 完全可以用这个!!!

    使用一个view的getWidth() getHeight() 方法来获取该view的宽和高,返回的值却为0。
    如果这个view的长宽很确定不为0的话,那很可能是你过早的调用这些方法,也就是说在这个view被加入到rootview之前你就调用了这些方法,返回的值自然为0.
    解决该问题的方法有很多,主要就是延后调用这些方法。可以试着在onWindowFocusChanged()里面调用这些方法,验证时可以获取到View的宽高的。


    相关执行打印:
    1: entry: onStart---->onResume---->onAttachedToWindow----------->onWindowVisibilityChanged--visibility=0---------->onWindowFocusChanged(true)------->

    2. exit:  onPause---->onStop---->onWindowFocusChanged(false)  ---------------------- (lockscreen)

    3. exit : onPause----->onWindowFocusChanged(false)-------->onWindowVisibilityChanged--visibility=8------------>onStop(to another activity)

    如何监控一个Activity加载完毕(完成渲染)-onWindowFocusChanged我也不知道是不是专门用来监控Activity的。但通过这个事件可以实现当一个Activity完全加载完毕后,然后就执行。

    1 @Override 
    2 public void onWindowFocusChanged(boolean hasFocus) { 
    3 // TODO Auto-generated method stub super.onWindowFocusChanged(hasFocus)
    4 }

    这个onWindowFocusChanged指的是这个Activity得到或者失去焦点的时候 就会call。。

    也就是说 如果你想要做一个Activity一加载完毕,就触发什么的话 完全可以用这个!!!

    有人说可以利用Activity的生命周期。

    onResume
    当你的Activity成为屏幕前端Activity后onResume将被立刻调用。在这个时间点你的Activity处于运行状态并且能与用户进行交互。你可以接受键盘和触摸输入,并在屏幕上显示你的用户界面。当你的Activity失去屏幕前端焦点时onResume也会被调用,并且这个Activity最终退出,而另一Activity将被弹到前端。这也是你的Activity将开始(或恢复)的地方,并且可以做一些需要的事情比如更新用户界面(例如:接收位置更新或者运行一个动画)。

    这==个。?

    我试过。是无法实现里面控件加载完毕后,取得他们的状态的!

    android API :

    void onWindowFocusChanged(boolean hasFocus) 
    Called when the current Window of the activity gains or loses focus.

    得到焦点是hasFocus == true 反之亦然!

    API 才是王道!!!

  • 相关阅读:
    20145307陈俊达《网络对抗》Exp6 信息搜集与漏洞扫描
    20145307陈俊达《网络对抗》Exp5 MSF基础应用
    微服务负载均衡 —— ribbon
    微服务注册与发现 —— eureka
    shiro
    unix网络编程——I/O多路复用之epoll
    unix网络编程——TCP套接字编程
    java异常处理及自定义异常的使用
    磁盘调度算法寻道问题
    关于mybatis的思考(3)——ResultMaps的使用
  • 原文地址:https://www.cnblogs.com/zl1991/p/5150270.html
Copyright © 2011-2022 走看看