Intereting Posts
Как обеспечить пользовательскую анимацию во время сортировки (notifyDataSetChanged) в RecyclerView Совместимость с Android / Java Добавление onclicklistener в listview (android) Cant вставляет строку в файл ресурсов android без получения ошибки Может ли Dagger использоваться для выполнения инъекции в Content Provider? Я должен дважды нажать кнопку, чтобы она работала Почему мой onItemSelectedListener не вызван в ListView? Android – удаление рекурсивных представлений в макете Андроид медленно подключается Проблема с XML xml-рендерингом в eclipse? Изменение размера эмулятора Android для моего экрана SSLException, связанный с отправкой товара для услуги Amazon Приложение для Android перезапускается при открытии, нажав значок приложения Как Android может написать значение для локального хранилища HTML5? Android Espresso: как я могу протестировать определенный фрагмент при выполнении одного действия для нескольких фрагментарных архитектур

Android: запуск службы с параметром

Чтобы начать работу с Activiy, я использую startService(MyService.class) . Это отлично работает, но в специальном случае сервис следует начинать по-разному. Я хочу передать некоторые параметры для запуска службы.

В своей работе я попробовал следующее:

 Intent startMyService= new Intent(); startMyService.setClass(this,LocalService.class); startMyService.setAction("controller"); startMyService.putExtra(Constants.START_SERVICE_CASE2, true); startService(startMyService); 

В моей службе я использую:

 public class MyIntentReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("controller")) { // Intent was received } } } 

IntentReceiver зарегистрирован в onCreate () следующим образом:

 IntentFilter mControllerIntent = new IntentFilter("controller"); MyIntentReceiver mIntentReceiver= new MyIntentReceiver(); registerReceiver(mIntentReceiver, mControllerIntent); 

С этим решением начинается сервис, но намерение не получено. Как я могу запустить Сервис и передать свои параметры?

Спасибо за вашу помощь!

Solutions Collecting From Web of "Android: запуск службы с параметром"

Шаг №1: Удалите реализацию BroadcastReceiver .

Шаг №2: Изучите Intent ваш сервис получает в onStartCommand() и посмотрите на действие через getAction() .

 Intent serviceIntent = new Intent(this,ListenLocationService.class); serviceIntent.putExtra("From", "Main"); startService(serviceIntent); //and get the parameter in onStart method of your service class @Override public void onStart(Intent intent, int startId) { super.onStart(intent, startId); Bundle extras = intent.getExtras(); if(extras == null) { Log.d("Service","null"); } else { Log.d("Service","not null"); String from = (String) extras.get("From"); if(from.equalsIgnoreCase("Main")) StartListenLocation(); } }