Есть ли способ узнать, когда деятельность началась полностью? - PullRequest
1 голос
/ 14 декабря 2011

Я написал скрипт для имитации действий пользователя. Рабочий процесс, например, сначала нажмите значок, чтобы запустить действие. Тогда делай другие действия. Вопрос в том, я не знаю точное время, когда деятельность началась полностью. В настоящее время я использую sleep, чтобы заставить мой скрипт ждать. Есть ли способ узнать, когда действие полностью запустилось?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

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

ViewTreeObserver vto = outerLayout.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    @Override
    public void onGlobalLayout() {
        outerLayout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
        //This is executed once the layout is drawn. AFAIK this is as close as it gets
        to when the activity is started.
    }
});
0 голосов
/ 14 декабря 2011

Ваша последняя задача - запустить что-то после запуска активности ... сделать это

Первый метод, вызванный из действия, - это onCreate(), следовательно, мы можем сказать, что завершение системных вызовов onCreate() onStart(), вызывающих метод onResume() ... после завершения onResume() можно сказать, что ваша деятельность запущена правильно. ..

Если вы не собираетесь переопределять onStart() или onResume(), то, что я собираюсь описать, может быть записано как последние утверждения onCreate(). Это обычно я делаю, когда мне не нужны onStart() или onResume().

Вы можете создать объект Handler. Как

Handler handler = new Handler();

В обработчике есть метод postDelayed(), который вызывается несколько раз после завершения создания и запуска.

назовите это как

handler.postDelayed(runnable,timeInMilliSeconds);

после завершения всех процессов приложение будет ожидать timeInMilliSeconds мс, чтобы запустить процесс, определенный в run методе runnable, предоставленном в postDelayed .....

Таким образом

Если ваша задача состоит в том, чтобы знать, когда запуск завершен, ответом будет: в конце onResume(), вызванный с вашего onStart() ....

Если вы хотите выполнить какое-либо действие, используйте метод handler.PostDelayed() и держите timeInMilliSeconds очень низким ... [от 1 до 10].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...