Подтвердить что ты не робот

Android-сервис и пользовательский интерфейс

У меня есть Сервис, запущенный в моем приложении.

У этой службы есть объект для отправки сообщения на сервер и функция для получения этого объекта и использования.

Объект инициализируется из Сервиса, и все же, когда пользовательский интерфейс получает эти объекты и использует его - похоже, он использует его в потоке пользовательского интерфейса.

Это правильно? Есть ли способ, который я могу сделать, чтобы мой объект всегда запускался из Сервисного потока?

public class ServerMessagesManager extends Service {
    private ServerMessagesReceiver serverMessageReceiver;
    @Override
    public void onCreate() {
        super.onCreate();
        this.serverMessageReceiver = new ServerMessagesReceiver(app);
    }

    public ServerMessagesReceiver getServerMessagesReceiver()
    {
        return serverMessageReceiver;
    }
}
4b9b3361

Ответ 1

Используйте IntentService вместо Service. Если вы выполняете сетевые вызовы в Service, пользовательский интерфейс будет зависеть. Поэтому используйте IntentService, так как он использует отдельный Thread.

И вы не знаете, когда сообщение сервера будет извлекать данные. A NullPointerException может быть сброшен, если объекты будут доступны, пока сетевые вызовы все еще продолжаются. Используйте BroadcastReceiver для запуска Intent, когда сервер отвечает.