Ответ 1
Пользовательский интерфейс доступен во время видимой жизни вашего приложения, которое может охватывать комбинацию нескольких действий.
Все, что вы меняете в представлениях, должно выполняться в потоке пользовательского интерфейса, а onPostExecute AsyncTask отражает ту же логику, выполняя инструкции внутри потока пользовательского интерфейса.
Вы можете использовать runOnUiThread в своем собственном Thread
, чтобы внести изменения в представления. Но поскольку AsyncTask имеет метод onPostExecute (который также работает в потоке пользовательского интерфейса), поэтому вам не требуется использовать runOnUiThread.
Обновление
Относительно вашего вопроса: Да, onPostExecute все равно будет вызван (потому что он вызван отдельным потоком), даже если ваша активность уничтожена и если метод будет манипулировать Views, вы просто получите Force Close, потому что ссылка на вашу активность больше не доступна.