onServiceConnected() не вызывается

У меня проблема с использованием фоновой службы.
Я пользуюсь услугой из 2-х видов деятельности.

Первое действие запускает Service с startService(intent) и связывается с ним с помощью bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

Это работает отлично, и я могу отправить Message в onServiceConnected().

Второе действие связывается только с Service (с момента его запуска), снова используя bindService(intent, mConnection, Context.BIND_AUTO_CREATE);

Теперь вот моя проблема:
Во втором действии у меня есть Button которая должна использовать эту услугу, когда я ее нажимаю.
Однако onServiceConnected() никогда не вызывается в этом onServiceConnected(), поэтому я не могу получить связующее, чтобы создать Messenger для отправки Message на сервер.

Кто-нибудь знает, когда onServiceConnected() вызывается точно или что он, возможно, ждет?
Или, может быть, что-то еще, чтобы исправить эту проблему?

EDIT: bindService возвращает false, что может вызвать это?

заранее спасибо

Ответ 1

После нескольких исследований я обнаружил, что это известная проблема в Android.

Второй TabActivity о котором я говорил, - это активность, которая используется как контент в TabActivity.

Способ исправить это состоял в вызове bindService(...) в контексте приложения, а не в контексте активности с помощью getApplicationContext().bindService(...)

Ответ 2

Вам нужно добавить:

<service android:name="package.path.to.your.service.class" android:enabled="true"></service>

в файле манифеста Android.

Ответ 3

Добавить bind в манифест.

 <service
            android:name=".MyAccessibilityService"
            android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE" >
            <intent-filter>
                <action android:name="android.accessibilityservice.AccessibilityService" />
            </intent-filter>

</service>

MyAccessibilityService - ваше имя службы.

Ответ 4

Это случилось со мной сейчас.
Не забудьте создать экземпляр класса вашего связующего перед возвратом onbind. Глупая ошибка, но это происходит. надеюсь, это поможет кому-то в будущем.

private YourBinder thisBinder;

oncreate
{
thisBinder = new YourBinder(); <--dont forget this.
}


public class YourBinder extends Binder
{

}

public IBinder onBind(Intent intent) 
{
return thisBinder;
}

Ответ 5

Это то, что сработало для меня

Вместо

public IBinder onBind(Intent intent) {
    return null;
}

я использовал

public IBinder onBind(Intent intent) {
    return mMessenger.getBinder();
}

Ответ 6

Я был xmarian и имел ту же проблему, а позже обнаружил, что я не дал надлежащее имя этой службе. Таким образом, имя службы должно быть присвоено атрибуту name. Я полагаю, что компилятор xmarian делает то же самое, что и запись в Android XML.