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

jee*_*wat 11 java android view callback

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

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

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

Gau*_*wla 13

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

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    doWhateverAfterScreenViewIsRendered();
}
Run Code Online (Sandbox Code Playgroud)

  • +1。我认为这可以多次调用,例如,如果您从“活动”中显示对话框或类似内容,那么最好的主意可能是在“活动”中保留一个布尔标志,即“ screenshotTaken”,并在获取屏幕截图后进行设置为“ true”,并避免在再次触发“ onWindowsFocushChanged”时创建额外的文件。 (2认同)

jee*_*wat 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;
    };
}
Run Code Online (Sandbox Code Playgroud)

我创建了上面的类,然后在onCreate()中调用这个方法执行

LoadActivity loadactivity= new LoadActivity();
loadactivity.execute();
Run Code Online (Sandbox Code Playgroud)