安卓 - onResume()之后是否有一个回调函数被调用?

20

在onResume()之后,是否有一个始终会被调用的回调函数?我需要这个,因为据我所知,在onResume()之后,布局中的每个View都已经被呈现出来了,这样我才能测量它们的尺寸。

谢谢。


1
啊,我们来看看:ViewTreeObserver 可能是正确的方法:https://dev59.com/1msz5IYBdhLWcg3wrJ2-#7735122 - Edward Falk
1个回答

31

Activity | Android Developers

protected void onPostResume ()

自API Level 1起

当活动恢复完成时调用(在调用onResume()之后)。应用程序通常不会实现此方法;它旨在供系统类在应用程序恢复代码运行后进行最终设置。

派生类必须调用该方法的父类实现。如果它们没有这样做,将抛出异常。


您可能还对以下内容感兴趣(在同一链接中):

public void onWindowFocusChanged (boolean hasFocus)

自 API Level 1 开始

当活动的当前窗口获得或失去焦点时调用。这是判断该活动是否对用户可见的最佳指标。默认实现会清除键跟踪状态,因此应始终调用。

请注意,这提供了有关全局焦点状态的信息,其独立于活动生命周期进行管理。因此,虽然焦点更改通常与生命周期更改有一定关系(停止的活动通常不会获得窗口焦点),但您不应依赖于此处的回调和其他生命周期方法(例如 onResume())之间的任何特定顺序。

然而,一般来说,已恢复的活动将具有窗口焦点...除非它显示了其他获取输入焦点的对话框或弹出窗口,在这种情况下,当其他窗口具有焦点时,活动本身将不具有焦点。同样,系统可能会显示系统级窗口(例如状态栏通知面板或系统警报),这些窗口将临时获取窗口输入焦点而不会暂停前台活动。

参数

hasFocus    Whether the window of this activity has focus.

2
谢谢,onWindowFocusChanged解决了问题。似乎即使在onPostResume()中仍然无法测量事物... - Zsombor Erdődy-Nagy
1
真正想要的是在布局但在显示之前的回调。 - Edward Falk
3
@EdwardFalk:ViewTreeObserver.addOnGlobalLayoutListener() - Austin Hanson
哈哈,看来你已经意识到了 :) - Austin Hanson
是的,这正是我想要的。 - Edward Falk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接