13

视图完全渲染后如何进行回调?

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

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

4

3 回答 3

16

试试这个逻辑......总是在视图获得焦点或渲染或失去焦点后调用

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    doWhateverAfterScreenViewIsRendered();
}
于 2012-07-09T12:31:21.437 回答
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();
于 2012-07-12T07:59:44.607 回答
0

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

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

于 2012-07-09T11:28:27.900 回答