Android的viewDidLoad和viewDidAppear相当

Cod*_*ger 31 iphone android viewdidload viewdidappear

Android是否具有与Cocoa的viewDidLoad和viewDidAppear函数相同的功能?

如果没有,那么当View出现时我将如何执行操作?我的应用程序是一个标签式应用程序,其中一个选项卡是论坛主题列表.我希望每次出现视图时都刷新主题列表.在Android中这样的事情可能吗?

Ric*_*ich 21

Activity类具有onCreate和onResume方法,这些方法与viewDidLoad和viewDidAppear非常相似.

Activity.onResume

编辑

除此之外,由于一些人在评论中提到视图树在这些回调期间尚未完全可用,因此如果您需要首先访问视图层次结构,则可以监听ViewTreeObserver.以下是如何使用ViewTreeObserver实现此目的的示例.

    View someView = findViewById(R.id.someView);
    final ViewTreeObserver obs = someView.getViewTreeObserver();
    obs.addOnPreDrawListener(new OnPreDrawListener() {

        public boolean onPreDraw() {
            obs.removeOnPreDrawListener(this);
            doMyCustomLogic();
            return true;
        }
    });
Run Code Online (Sandbox Code Playgroud)

  • @Rich,我认为它更像是viewWillAppear,而不是viewDidAppear。onPreDraw意味着准备绘图 (2认同)
  • @KuangYuang我的观点是提到ViewTreeObserver并演示如何添加监听器.显然,任何在Google上找到此功能的人都可以查看在线文档中的所有其他可用选项.我认为在大多数情况下,onPreDraw很好,因为这是在测量/布局传递之后,它将允许您知道视图的尺寸,并且仍然允许您修改它并强制执行另一个度量/布局传递. (2认同)

Cam*_*mer 14

onResume()更像viewCouldAppear.:) public void onWindowFocusChanged(boolean)最接近viewDidAppear.此时,您可以在活动生命周期内询问有关其大小的视图.