Bindservice не работает внутри кнопки щелчок, но работает в OnCreate - Android

StackOverflow https://stackoverflow.com/questions/3628999

Вопрос

У меня довольно простая местная служба, которую я пытаюсь связать с моей деятельностью. Я проработал это вчера с содействием, и он заставил меня выпрямиться, так как у меня было трудное время, чтобы заставить службу привязать. Оказывается, причина у меня было так много проблем, было то, что я пытался связать сервис:

bindService(new Intent(this, myService.class), mConnection, Context.BIND_AUTO_CREATE);

Внутри пустового метода, который назывался после нажатия кнопки.

private void doBindService() {
            bindService(new Intent(this, SimpleService.class), mConnection, Context.BIND_AUTO_CREATE);
            mIsBound = true;
        }

       private OnClickListener startListener = new OnClickListener() {
        public void onClick(View v){
            doBindService();
        }               
       };

Когда я перевел свой Bindservice (), позвоните в метод деятельности Onreate, он работает нормально. Согласие упомянуло что-то о том, что звонок является асинхронным, и я не знаю достаточно о создании активности Android, чтобы знать, если это то, что была моя проблема или нет. Я знаю, что мой onserviceConnection () вызывается внутри моего обслуживания (), когда кнопка нажала, на моем MBoundservice не будет работать, когда я попробовал доступ к участникам внутри сервиса.

Может кто-нибудь сказать мне, почему он не работает внутри кнопки, но работает внутри OnCreate ()?

TIA

Это было полезно?

Решение

То this Ссылка внутри doBindService не то же самое в обоих случаях. Если это позвонит onCreate Это будет ссылка на Activity Если вызывается из кнопки, нажмите, это будет ссылка на OnClickListener. Отказ Очевидно, вы не хотите, чтобы ваша служба привязана к кнопкам, кликом прослушивателя.

Попробуйте изменять this к YOURACTIVITYNAME.this и посмотреть, если это поможет.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top