2017-02-14 55 views
0

步骤#1。需要实现接口ServiceConnection实施接口ServiceConnection

public class ServiceBinding<T extends ParentService<T>> implements ServiceConnection { 
    public T bindedService; 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     // Warning: Type safety: Unchecked cast from IBinder to ChatService<T>.LocalBinder 
     bindedService = ((T.LocalBinder) service).getService(); 
    } 

    @Override 
    public void onServiceDisconnected(ComponentName arg0) { 
    } 
} 

步骤#2。然后家长服务将如下:

public abstract class ParentService<T extends ParentService<T>> extends Service { 
    public class LocalBinder extends Binder { 
     public T getService() { 
      return (T) T.this; // Warning: Unchecked cast from ChatService<T> to T 
     } 
    }; 
} 

问:就是这样一个接受的解决方案?

ServiceConnection该如何正确实施?

回答

0

您可以实现这样的 -

private ServiceConnection mConnection = new ServiceConnection() { 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder service) { 
     LocalBinder binder = (LocalBinder) service; 
     service = binder.getService(); 
     boundVal = true; 
    } 

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

的boundVal是 'unbindservice' 扳机。以连接作为参数传递boundval。

onServiceConnected()onServiceDisconnected()分别在客户端 - 服务器连接建立或断开后被调用。在onServiceConnected()方法的情况下,将传递一个IBinder对象,其中包含客户端与服务交互所需的信息。 干杯!

+0

如何制作一个通用的绑定实现以避免重复代码的问题。 – DukeSpontaneous

相关问题