Привязка к сервису всегда возвращает false - PullRequest
1 голос
/ 24 октября 2011

Я пытаюсь привязать сервис, но метод привязки сервиса всегда возвращает false.Я считаю, что проблема в моей связи.Когда я импортирую местоположение класса LocalBinder (в сервисе), я не получаю никаких ошибок компиляции, но вызов bindService все еще ложен.

Сервисная информация:

//binder for client
private final IBinder mBinder = new LocalBinder();

//client class binder
public class LocalBinder extends Binder {
    ServiceA getService() {
        // Return this instance of LocalService so clients can call public methods
        return ServiceA.this;
        }
}

@Override
public IBinder onBind(Intent arg0) {
    return mBinder;
}

//called when service is created
public void onCreate(){
    super.onCreate();
    Toast.makeText(this,"ServiceA is started",Toast.LENGTH_SHORT).show();
}

Соединение:

 private ServiceConnection connect2A = new ServiceConnection() {

    @Override
    public void onServiceConnected(ComponentName className,
            IBinder service) {
        // We've bound to LocalService, cast the IBinder and get LocalService instance
        LocalBinder newBinder = (LocalBinder) service;
        mainService = newBinder.getService();
        bound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        bound = false;
    }
};

Исходные вызовы:

    @Override
protected void onStart(){
    super.onStart();
    Intent intent = new Intent(this, ServiceA.class);
    startService(intent);
    boolean check = bindService(intent,connect2A,0);
    Toast.makeText(this, "Return from check is: " + check, Toast.LENGTH_LONG).show();
    //program does get to this point, but binding fails
}

файл AndroidManifest.XML:

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".ServiceTest2Activity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
<service android:enabled="true" android:name=".serviceA" />
</application>

1 Ответ

0 голосов
/ 24 октября 2011

Некоторые идеи:

-В каком классе находится метод onStart ()? Я связываюсь с моими услугами в onCreate ().

- Возможно, вам нужно передать Context.BIND_AUTO_CREATE вызову bindService? например,

boolean check = bindService(intent, connect2A, Context.BIND_AUTO_CREATE);

- Как предлагает другой комментатор, вы должны опубликовать соответствующие фрагменты из вашего AndroidManifest.xml.

-В метод onServiceConnected следует добавить след / тост, чтобы вы знали, вызывается ли он.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...