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
- ¿Cómo podemos reiniciar el servicio?
- Pasar parámetros a GcmTaskService
- Android Context.bindService devuelve siempre falso y el objeto ServiceConnection nunca se activa
- La mejor manera de enviar actualizaciones de ubicación de usuario al servidor en segundo plano (Android)
- Android: Cómo enviar la solicitud http a través del servicio cada 10 segundos
"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
- Desbloquear el servicio externo android Paho MQTT ServiceConnectionLeaked error
- Android: El servicio se detiene cuando la actividad está cerrada
- DispatchKeyEvent desde Service
- Cómo recoger una llamada por adb
- Uso de GoogleApiClient en un servicio
- ¿Puede existir un servicio de fondo sin su aplicación principal?
- ASmack como servicio
- ¿Debería un MediaPlayer ejecutarse en hilos separados?
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