У меня есть служба Android с набором операций:
MyService.java
public class MyService extends Service {
public int login() {
//Invokes yet another logic to initiate login and waits for result
//synchronously and returns status code based on result of operation
}
public int logout() {
//Invokes yet another logic to initiate logout and waits for result
//synchronously and returns the status code
}
}
Я вызываю методы из активности клиента, скажем,MyClientActivity.java
, находящихся в одном и том же процессе.
Для каждой операции служба вызывает некоторую логику и синхронно ожидает результат.Когда служба выполняет всю эту логику, я не хочу, чтобы пользователь выполнял что-либо еще и просто отображал экран загрузки.В общем, после того, как я начал операцию, я хочу, чтобы MyClientActivity
синхронно ожидал код состояния.Теперь я знаю, что не могу заблокировать поток пользовательского интерфейса, чтобы избежать ANR.
Как я могу заставить эту операцию выполняться в отдельном потоке, а затем получить результат обратно, чтобы я мог соответствующим образом передать результат обратно пользователю, изменив пользовательский интерфейс на основе этого результата.
Я довольноновичок в этом и не может понять концепции.Если кто-то может объяснить вместе с примером, это было бы полезно.