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

Извините за новичку, но я создал метод в классе Application в java, безопасно ли запускать метод со сложным и средним алгоритмом? Это будет икота в пользовательском интерфейсе?

Solutions Collecting From Web of "Класс приложения работает в потоке пользовательского интерфейса или?"

Комплексный и средний алгоритм

Если он является сложным, вы должны запускать его асинхронным образом, используя Thread , AsyncTask , IntentService или что вам больше подходит, но не запускайте его непосредственно в подклассе Application / Activity / Fragment / Service или что-то еще Работает в потоке пользовательского интерфейса. В противном случае это замедлит запуск вашего приложения.

От процессов и потоков | Разработчики Android (акцент мой):

Когда компонент приложения запускается, и в приложении нет других запущенных компонентов, система Android запускает новый процесс Linux для приложения с одним потоком выполнения. По умолчанию все компоненты одного и того же приложения выполняются в одном процессе и потоке (называемом «основным» потоком). Если запускается компонент приложения, и уже существует процесс для этого приложения (поскольку существует другой компонент из приложения), тогда компонент запускается в этом процессе и использует тот же поток выполнения. Тем не менее, вы можете организовать различные компоненты в вашем приложении для запуска в отдельных процессах, и вы можете создавать дополнительные потоки для любого процесса.

А также:

Система не создает отдельный поток для каждого экземпляра компонента. Все компоненты, которые запускаются в одном процессе, создаются в потоке пользовательского интерфейса, и системные вызовы для каждого компонента отправляются из этого потока. Следовательно, методы, которые реагируют на системные обратные вызовы (например, onKeyDown () для отчета о действиях пользователя или метод обратного вызова жизненного цикла), всегда запускаются в потоке пользовательского интерфейса процесса.

Так что да, такие методы, как onCreate в вашем классе Application будут вызваны в основном потоке (UI).

Есть только несколько классов, которые запускаются асинхронно, например, IntentService .

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