Intereting Posts

Подписка или привязка к существующей службе Intent

У меня есть приложение, у которого есть начальная активность, которая перечисляет некоторые файлы в виде списка. Когда элемент кликается по списку, он переходит к детальному действию этого конкретного файла.

В подробном представлении у меня есть кнопка, называемая загрузкой, когда вы нажимаете на загрузку, она запускает IntentService, который устанавливает файл, который нужно загрузить как таковой:

downloadButton.setOnClickListener(new OnClickListener() { public void onClick(View v) { Intent intent = new Intent(AppDetailsActivity.this, AppDownloadService.class); intent.putExtra(Consts.APP_DOWNLOAD_RECEIVER_KEY, new DownloadReceiver(new Handler())); startService(intent); } }); 

Класс DownloadReceiver используется для обновления индикатора выполнения в подробном описании загружаемого файла.

Теперь, что я хочу сделать …

Если пользователь в настоящее время загружает файл из подробного действия, а затем возвращается к предыдущему действию, я хочу, чтобы активность каким-то образом подписалась / была привязана к той же IntentService и извлекала результаты, чтобы она могла показывать индикатор выполнения в списке Элемент загружаемого файла.

  1. Возможно ли использование IntentService?
  2. Является ли IntentService правильной?
  3. Есть ли какие-нибудь примеры (поскольку я не нашел ничего, что показывало мне, как это сделать)?

Для загрузки вы можете использовать IntentService . Он работает по другой теме. Кроме того, имейте в виду, что при вызове startService() несколько раз для этого IntentService он создаст очередь и будет обрабатывать одно намерение за раз.

Чтобы показать ход работы, я не верю в трансляции, это правильно. Хотя очень вероятно, что это процесс в порядке, сама инфраструктура или Android не гарантируют заказ при доставке. Это означает, что вы можете получить трансляцию на 50%, а затем трансляцию на 40%. Для этого я рекомендую вам взглянуть на этот пример: http://developer.android.com/reference/android/app/Service.html#LocalServiceSample

Это может выглядеть немного сложнее, но у вас будет двухсторонняя связь, на которую вы можете положиться.

Мне удалось найти решение. Оказывается, я должен использовать намерение трансляции для публикации прогресса в моей службе; И используйте BroadcastReceiver в своих действиях для получения результатов.

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

http://mobile.tutsplus.com/tutorials/android/android-fundamentals-intentservice-basics/