Android совместно использует службу определения местоположения между несколькими действиями на карте - PullRequest
1 голос
/ 08 января 2012

Я пишу приложение с 3 mapactivities, и я реализовал локальную службу (например, учебник Google), которая получает обновления от менеджера местоположений, чтобы обмениваться данными о местоположении из GPS между этими действиями.Теперь я хочу поместить каждое действие в отдельный процесс, чтобы следовать предложению Google.

Так что мой вопрос, как я должен действовать ??Реализовать интерфейс AIDL для удаленных служб или зарегистрировать каждую карту активности для прослушивателя местоположения ??

Спасибо за ответы и извините за мой плохой английский: P

Ответы [ 3 ]

0 голосов
/ 08 января 2012

Первое обоснование:

Эта цитата в Javadoc немного ... странная. Если вы понимаете «выполнение» как находящееся между onResume () и onPause (), то обычно две действия, принадлежащие одному приложению, не могут «выполняться одновременно». Вам, вероятно, придется связываться с классом Application или самой ОС, чтобы он вел себя иначе.

На самом деле, сейчас я занимаюсь разработкой приложения, которое использует несколько подклассов MapActivity и до сих пор не сталкивалось с какими-либо проблемами (т. Е. Более 40 часов разработки и тестирования как на эмуляторах, так и на устройстве).


Поэтому я бы предложил:

  1. Попробуйте реализовать свое приложение как однопроцессное действие с локальной службой и просто запустить с ним.
  2. Если вы не хотите этого делать (не могу винить вас;)) или у вас возникли какие-либо проблемы, я бы предложил начать с MapView, возможно, инкапсулированного во фрагмент. Вот обсуждение , с которого можно начать.

Короче говоря, из-за практической фрагментации Android хранение ваших Деятельностей в одном процессе и выделение большего количества времени за счет более простой реализации будет более безопасным, в конечном итоге менее трудоемким и, вероятно, более эффективным подходом, чем искусственное разделение вашего приложение и потенциально скрипеть зубами на МПК. По крайней мере, на мой взгляд.

0 голосов
/ 09 января 2012

После некоторого исследования я думаю, что лучший способ - внедрить IPC с помощью мессенджера, как описано в Android doc http://developer.android.com/guide/topics/fundamentals/bound-services.html#Messenger.. Я протестирую это решение, сообщив здесь результат ..

Лучший учебник - http://developer.android.com/reference/android/app/Service.html#RemoteMessengerServiceSample, где реализована двухсторонняя связь с клиентом и службой.

0 голосов
/ 08 января 2012

Если только одно приложение нуждается в информации о местоположении, то использование удаленного сервиса и AIDL является ненужным осложнением. Проще всего было бы иметь локальную службу, с которой могут связываться действия, а затем использовать функцию sendBroadcast () для отправки информации о местоположении. Затем действия могут зарегистрировать BroadcastReceiver для сбора этих данных.

...