обновление активности из асинхронного сервиса - PullRequest
2 голосов
/ 02 апреля 2010

Я реализовал сервис, который выполняет асинхронную синхронизацию между моим приложением и документами Google. Я хочу обновить активность моего приложения после завершения синхронизации. Однако из-за службы возможно, что приложение может находиться в неизвестном состоянии. Есть ли способ заставить активность верхнего уровня, какой бы она ни была, воссоздать себя из асинхронной задачи в службе.

Ответы [ 3 ]

2 голосов
/ 02 апреля 2010

Я считаю, что правильный способ сделать это - использовать удаленный интерфейс с использованием AIDL: https://developer.android.com/guide/components/aidl.html

Вы создаете простой файл *.aidl с интерфейсом в нем, и инструменты Android сгенерируют класс Interface для вас. Это позволит вам зарегистрировать методы обратного вызова. Гораздо чище, чем бросать startActivity намерения взад и вперед.

2 голосов
/ 03 апреля 2010

Вы должны передать намерение от службы, а затем сделать действие получателем вещания.

Вот запись на BroadcastReceiver .

Надеюсь, это поможет.

2 голосов
/ 02 апреля 2010

В вашем Сервисе просто позвоните startActivity(new Intent(this, TopLevelActivity.class)). Это запустит ваш TopLevelActivity, если он еще не запущен, или вызовет метод onNewIntent() вашего TopLevelActivity, если он уже запущен, и выведет его наверх. Вы можете переопределить onNewIntent() и захватить намерение, если хотите получать уведомления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...