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.