Намерение активности службы Android - PullRequest
1 голос
/ 02 августа 2011

Я хочу передать строку от activiy к сервису.

            Bundle mBundle = new Bundle();
            mBundle.putString("MyString", string);
            mIntent.putExtras(mBundle);
            startService(mIntent);

это в классе Activity

            Intent myIntent = getIntent();
            String value = myIntent.getExtras().getString(key);

и это в классе Service Он не принимает метод getIntent (): SI не знает, что я буду делать

Ответы [ 3 ]

1 голос
/ 02 августа 2011

Код в услуге должен быть размещен в методе onStart(Intent intent, int startid) и код становится String value = intent.getExtras().getString(key);

0 голосов
/ 02 августа 2011

Переместите часть кода, которая зависит от намерения, в onStartCommand: http://developer.android.com/reference/android/app/Service.html#onStartCommand(android.content.Intent, int, int)

OnStartCommand был вызван OnStart до версии API 5, перейдите по ссылке на документацию для получения дополнительной информации о обратной совместимости в вашем приложении.

@Override
  public int onStartCommand(Intent intent, int flags, int startId) {
      String value = intent.getExtras().getString(key);
  }

Также не забудьте перенести тяжелый код в фоновый поток, который вы запускаете в onStartCommand, иначе вы столкнетесь с ошибкой приложения не отвечает.

0 голосов
/ 02 августа 2011

Когда вы запускаете службу, используя startService(mIntent), вызывается onStartCommand службы , что является хорошим местом для обработки намерения.

...