视图完全呈现后如何进行回调?

时间:2012-07-09 11:17:39

标签: java android view callback

如何在完全呈现视图后进行回调?

我正在尝试调用一个方法,该方法采用父视图的屏幕截图。 如果我在onCreate()方法中编写该代码,则应用程序因空指针而崩溃(因为没有呈现视图)。 目前我实施的临时解决方案是在调用该方法之前延迟1秒。 但是,我正在寻找一个更加强大的解决方案来解决这个问题。

任何建议和帮助表示赞赏。 谢谢:))

3 个答案:

答案 0 :(得分:12)

尝试此逻辑...在视图获得焦点或渲染或失去焦点后始终调用

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    doWhateverAfterScreenViewIsRendered();
}

答案 1 :(得分:1)

您应该使用Activity上的onResume()回调,即

  

当活动开始与用户交互时调用。此时,您的活动位于活动堆栈的顶部,用户输入将转到活动堆栈。

答案 2 :(得分:1)

我现在有更好的选择:) 这真的在渲染布局后给出回调

private class LoadActivity extends AsyncTask<String, Void, String> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        mainMethod();
    }

    @Override
    protected void onPostExecute(String result) {
        super.onPostExecute(result);

        takeScreenShot(1);
    }

    @Override
    protected String doInBackground(String... params) {
        return null;
    };
}

我创建了上面的类,然后调用此方法在onCreate()

中执行
LoadActivity loadactivity= new LoadActivity();
loadactivity.execute();