2016-03-21 2 views
1

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

public class PlayMusicServiceBinder extends Binder{ 
    public PlayMusicService getService(){ 
     return PlayMusicService.this; 
    } 
} 

Затем я запустить службу и создать соединение с ним:

private PlayMusicService pms 

startService(playServiceIntent.putExtra("songs", songs).putExtra("currentPosition", currentPosition).putExtra("path", path)); 
    serviceConnection = new ServiceConnection() { 
     @Override 
     public void onServiceConnected(ComponentName name, IBinder service) { 
      pms = ((PlayMusicService.PlayMusicServiceBinder)service).getService(); 
     } 

     @Override 
     public void onServiceDisconnected(ComponentName name) { 
      pms = null; 
     } 
    }; 

    onBind(); 

onBind():

public void onBind(){ 
    this.bindService(new Intent(this, PlayMusicService.class),serviceConnection, Context.BIND_AUTO_CREATE); 
} 

И компилятор сказать по этой линии pms = ((PlayMusicService.PlayMusicServiceBinder)service).getService();, что: «Невозможно лить»

Я видел много примеры, когда такие действия были проведены, и никто не жаловался на ошибки

Помогите мне пожалуйста.

Спасибо.

+0

Похоже, вы пытаетесь отправить службу в связующее. Правильно ли я это прочитал? – duffymo

+0

Binder на службу, я думаю – DZordered

+0

Является ли Binder типом обслуживания? Если нет, тогда вы не можете наложить ссылку на службу. Это классический OO IS-A. – duffymo

ответ

0

Вы добавили этот код в класс PlayMusicService?

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

@Override 
public boolean onUnbind(Intent intent) { 

    return super.onUnbind(intent); 
} 

private final IBinder mBinder = new PlayMusicServiceBinder(); 
+0

Omg, working :) Большое спасибо! – DZordered

Смежные вопросы