Как сделать обратный вызов после полного представления?

Как сделать обратный вызов после полного отображения представления?

Я пытаюсь вызвать метод, который принимает экранный снимок родительского представления. Если я пишу этот код в методе onCreate(), приложение вылетает из-за нулевого указателя (поскольку рендеринг не отображается). на данный момент временное решение, которое я выполнил, заключается в том, чтобы сделать задержку в 1 секунду до вызова этого метода. Но я ищу гораздо более надежное решение этой проблемы.

любые предложения и помощь оценены. спасибо:)

Ответ 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();

Ответ 2

Попробуйте эту логику... всегда вызывается после того, как представление получило фокус или визуализировалось или теряет фокус

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

Ответ 3

Вы должны использовать обратный вызов onResume() на Activity, который

Вызывается, когда действие начнет взаимодействовать с пользователем. На этом этапе ваша деятельность находится в верхней части стека действий, при этом пользовательский ввод будет работать.