Android bind servicio a la actividad

He visto varios ejemplos similares aquí, pero no puedo conseguir que mi servicio se vincule con la actividad.

Estoy recibiendo el error

"Android.os.binderproxy no se puede enviar a IC_CommissaryService".

Mi servicio se ve así:

public class IC_CommissaryService extends Service { @Override public IBinder onBind(Intent intent) { return mBinder; } private final IBinder mBinder = new LocalBinder(); public class LocalBinder extends Binder { IC_CommissaryService getService() { return IC_CommissaryService.this; } } public int onStartCommand(Intent intent, int flags, int startId) { } private boolean SendOrderToServer(int orderID) { /* do stuff*/ } 

}

Y mi actividad se ve así:

 public class SubmitOrders extends Activity { IC_CommissaryService ICservice; @Override public void onCreate(Bundle savedInstanceState) { Intent serviceintent = new Intent(this, IC_CommissaryService.class); serviceintent.putExtra("binded", true); bindService(serviceintent, mConnection, Context.BIND_AUTO_CREATE); } private ServiceConnection mConnection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName className, IBinder service) { Log.e("TEST", "SERVICE CONNECTED"); try { ICservice =(IC_CommissaryService.LocalBinder)service).getService(); for(int i = 0; i < Submitorders.size(); i++) { ICservice.SendOrderToServer(Submitorders.get(i).intValue()); } } catch(Exception ex) { Log.e("Error", "Error connecting service: " + ex.getMessage()); } } @Override public void onServiceDisconnected(ComponentName className) { } }; } 

Estoy recibiendo el error en mi actividad en la línea servicio ICservice =(IC_CommissaryService.LocalBinder)service).getService();

Creo que he hecho lo mismo que la gente ya sugirió en otros puestos por lo que cualquier ayuda por favor?

Gracias

Tuve el mismo tipo de problema. Lo acabo de averiguar hoy. Por favor, mire las partes anotadas con <<===== abajo. Espero que ayude.

 public class PracticeServiceBindingActivity extends ListActivity { private MyService.MyBinder service; <<==== .... private ServiceConnection connection = new ServiceConnection( ){ public void onServiceConnected (ComponentName name, IBinder service) { setService(MyService.MyBinder) service; <<==== .... } } public void onCreate(....) { ... public MyService.MyBinder getService(){ <<===== return service; } public void setService(MyService.MyBinder service) { <<===== this.service = service; } } } 

Cita de la documentación de Bound Services:

Si su servicio es privado para su propia aplicación y se ejecuta en el mismo proceso que el cliente (que es común), debe crear su interfaz extendiendo la clase Binder y devolviendo una instancia de ella desde onBind ().

Elimine el atributo android: process en AndroidManifest.ml para que el servicio se ejecute en el mismo proceso. Tuve el mismo problema hoy que hizo el truco.

Estas son las clases abstractas que utilizo para resolver este problema: https://gist.github.com/frenchie4111/6086c6e4327d7936364a

Simplemente extienda ambas clases con su servicio y actividad (puede cambiar el fragmento de un fragmento a una actividad con facilidad). Y asegúrese de que en su servicio / fragmento onCreate, configure la clase de servicio de la siguiente manera:

 public void onCreate( Bundle savedInstance ) { super.onCreate( savedInstance ); this.serviceClass = IC_CommissaryService.class; } 
  • Android: Desactivar la pantalla de un servicio
  • ¿Cómo puedo activar automáticamente el inicio automático de mis aplicaciones en el menú de seguridad Xiaomi Mi4i?
  • ¿Cómo matar a un servicio de Android?
  • Cómo manejar onServiceConnected después onPause?
  • Mejor momento / ubicación para configurar un AlarmManager
  • REST / JSON / XML-RPC / SOAP
  • Android - implementar startForeground para un servicio?
  • Cómo crear una actividad y un servicio de Android que utilicen procesos independientes
  • Service.onStartCommand () - ¿es posible devolver más de una bandera?
  • Intento pendiente de obtener servicio
  • Android: ¿Es mejor iniciar y detener un servicio cada vez que sea necesario o dejar que un servicio funcione y se vincule y se desvincule de él?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.