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
- Mi BroadcastReceiver no está recibiendo la intención BOOT_COMPLETED después de mis botas N1
- La notificación sigue en la barra después de matar al servicio
- ¿Android mata cada servicio o el proceso entero?
- Servicio de Android matado
- EventBus: la actividad no recibe un evento cuando la aplicación está en segundo plano
"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
- Mantenga el servicio en ejecución
- Cliente de servicio WSDL / SOAP de Android
- AccessibilityService se destruye cuando se ejecuta uiautomator
- ¿Cómo comprobar si un servicio ya se está ejecutando o no en android?
- Android: `java.lang.IllegalArgumentException: Servicio no registrado` cuando se llama onStop ()
- ¿Cómo puedo mantener mi servicio Android funcionando cuando la pantalla está apagada?
- Cómo mostrar el mini controlador en la parte inferior o controles de medios persistentes como spotify o Google música en la aplicación completa
- Uso del servicio para ejecutar fondo y crear notificaciones
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; }
- Experimento de curva gamma – convertir 2,2 a opuesto de 1,8?
- Método abreviado de Eclipse para los métodos de ciclo de vida de Android