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; } 
  • No recibe devoluciones de llamada CountDownTimer en Service
  • Obtención de resultados de varias AsyncTasks
  • ¿Por qué no funciona LocalBroadcastManager en lugar de Context.registerReceiver?
  • ¿Cuándo debo usar unbindService (), y cómo debo usarlo correctamente para desvincularme de un servicio remoto que está utilizando una interfaz AIDL?
  • ¿Cómo puedo activar automáticamente el inicio automático de mis aplicaciones en el menú de seguridad Xiaomi Mi4i?
  • Mejores prácticas para pubnub en android
  • Tarea del temporizador VS Uso del administrador de alarmas en el servicio de Android
  • Propósito always null onStartCommand
  • AlarmManager no se repite
  • Obtener una vista de AccessibilityNodeInfo para crear superposición
  • Startservice no funciona en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.