Android: передать параметр в службу из действия

Я привязываюсь к Сервису следующим образом:

Класс активности:

ListenLocationService mService;
@Override
public void onCreate(Bundle savedInstanceState) {
        ...
        Intent intent = new Intent(this, ListenLocationService.class);
        intent.putExtra("From", "Main");
        bindService(intent, mConnection, Context.BIND_AUTO_CREATE);
        ...
}

private ServiceConnection mConnection = new ServiceConnection() {

        public void onServiceConnected(ComponentName className,
                IBinder service) {
            LocalBinder binder = (LocalBinder) service;
            mService = binder.getService();         
        }

        public void onServiceDisconnected(ComponentName arg0) {
        }
    };

Это onBind метод моего Service:

@Override
public IBinder onBind(Intent intent) {
    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();
    }
    return mBinder;
}

Итак, у меня есть «ноль» в LogCat - пакет равен нулю, несмотря на то, что я сделал намерение.putExtra до bindService

В целом Служба работает нормально, однако мне нужно вызвать StartListenLocation();только из основной активности приложения (я решил сделать это, отправив флаг).

Как я могу отправить данные в сервис? Или, может быть, есть другой способ проверить, какая активность запущена onBind?

19
задан Ilya Blokh 31 March 2012 в 09:54
поделиться