#android #android-activity #callback #messages #runnable
#Android #android-активность #обратный вызов #Сообщение #работоспособный
Вопрос:
Возможно, это было скрыто где-то в документах, но я не помню, чтобы я это видел:
Предполагая, что все выполняется в одном потоке, будет ли обратный вызов activity или любой другой обратный вызов, если на то пошло, прерывать runnable или даже какой-либо другой обратный вызов, выполняемый в потоке, или они публикуются последовательно по времени возникновения в виде сообщений, похожих на runnables?
Ответ №1:
Это, конечно, не прерывает выполнение, по крайней мере, в потоке пользовательского интерфейса. Например, предположим, что у вас есть кнопка, и вы помещаете Thread.sleep(10000) в ее обратный вызов onClick. Ну, как только вы нажмете кнопку, весь пользовательский интерфейс зависнет. Этого бы не произошло, если бы обратный вызов onClick прервал выполнение потока пользовательского интерфейса.
Комментарии:
1. Я только что протестировал это, используя sleep в Activity, и кажется, что сообщения действительно выстраиваются в очередь должным образом, за исключением того, что некоторые сообщения теряются, если поток не активен.
Ответ №2:
Если вы хотите знать все ответы на вопрос, вам нужно использовать
http://developer.android.com/guide/developing/debugging/debugging-tracing.html
Ответ №3:
Зависит от выполняемого. Все обратные вызовы активности происходят в потоке пользовательского интерфейса. Например, поток для onCreate совпадает с потоком, который вызывает onTabSelected.
Если вы запустили AsyncTask, он выполняется в своем собственном потоке.
Попробуйте использовать следующую инструкцию Log для проверки вашего сценария
Log.i("","Thread Id : " Thread.currentThread().getId());