活动对用户可见后执行方法

我有一个活动包含太多的UI控件。 我想在活动可见之后执行一个方法。

我试过一个例子:

public class Main extends Activity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); MyMethod(); } private void MyMethod(){ Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show(); } } 

但在上面的示例中,消息显示在活动可见之前。

有没有办法find,如果活动是完全可见的?

Solutions Collecting From Web of "活动对用户可见后执行方法"

将您的代码移到onResume

 @Override protected void onResume() { super.onResume(); MyMethod(); } 

检查活动的生命周期

http://developer.android.com/reference/android/app/Activity.html

 protected void onResume () 

在onRestoreInstanceState(Bundle),onRestart()或onPause()之后调用,以便您的活动开始与用户交互。 这是开始animation,打开专用访问设备(如相机)等的好地方。

请记住,onResume不是您的活动对用户可见的最佳指标; 系统窗口如键盘可能在前面。 使用onWindowFocusChanged(boolean)可以确定您的活动对用户是可见的(例如,恢复游戏)。

派生类必须调用超类的这个方法的实现。 如果他们不这样做,就会抛出exception。

将代码移到onResume

每当您的活动进入前台时(包括第一次创build活动时),系统都会调用此方法。 阅读暂停和恢复活动的详细信息

 @Override protected void onResume() { super.onResume(); MyMethod(); } 

在Android活动生命周期中阅读更多内容- 这些方法有哪些?

在Activity的onResume()中调用MyMethod()

根据文档onResume()当活动将开始与用户交互时调用。 此时,您的活动位于活动堆栈的顶部,用户input即可。

 protected void onResume() { super.onResume(); MyMethod(); } 

没有真正的callback,就是那个时候活动是可见的。 但是正如你在附图中看到的,当Activity应该是可见的时, onResume()方法就被调用了。

另请参阅Activity生命周期和文档HERE

所以你的方法应该这样调用:

 @Override public void onResume() { super.onResume(); MyMethod(); } 

图片

 // try this @Override public void onAttachedToWindow() { super.onAttachedToWindow(); Toast.makeText(this, "Hi UI is fully loaded", Toast.LENGTH_SHORT).show(); }