none
Por que el servicio no inicia? (Xamarin Android). RRS feed

  • Pregunta

  • La cosa es que cuando inicia la app el servicio inicia pero cuando cierro la app por el administrador de tarea este manda un alerta diciendo que la app se cerro: 

    Este seria la clases del servicio:

     [Service(Enabled =true)]
        [IntentFilter(new String[] { "Com.Cobros.Service" })]
        public  class ServicioCobros: Service
        {
            ServicioBinder binder;
            Timer timer;
            Data BD = new Data();
            public ServicioCobros()
            {
    
            }
            public override IBinder OnBind(Intent intent)
            {
                binder = new ServicioBinder(this);
                return binder;
            }
            [return: GeneratedEnum]
            public override StartCommandResult OnStartCommand(Intent intent, StartCommandFlags flags, int startId)
            {
                //decimal dias = decimal.Parse(TimeSpan.FromDays(1).TotalMilliseconds.ToString());
                //int Milesegundos = int.Parse(System.Math.Round(dias, 0).ToString());
                timer = new Timer(Tick, null, 0, 1000);
    
                return StartCommandResult.StickyCompatibility;
            }
            private void Tick(object objeto)
            {
                // Codigo del servicio
                if (BD.GetConfiguracion() != null)
                {
                    if (BD.GetConfiguracion().Notificaciones)
                    {
    
                        if (BD.GetConfiguracion().Notificado != DateTime.Now.Date.ToString("dd/MM/yyyy"))
                        {
    
                            Bundle valuesend = new Bundle();
    
                            Intent newintent = new Intent(this, typeof(MainActivity));
                            newintent.PutExtra("Notificacion", "1");
    
                            Android.Support.V4.App.TaskStackBuilder stackBuilder = Android.Support.V4.App.TaskStackBuilder.Create(this);
                            stackBuilder.AddParentStack(Java.Lang.Class.FromType(typeof(MainActivity)));
                            stackBuilder.AddNextIntent(newintent);
    
    
                            PendingIntent resultPedingIntent = stackBuilder.GetPendingIntent(0, (int)PendingIntentFlags.UpdateCurrent);
    
    
                            NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
                                .SetAutoCancel(true)
                                .SetContentIntent(resultPedingIntent)
                                .SetContentTitle("Cobros")
                                .SetSmallIcon(Resource.Drawable.Cobrando_Icono)
                                .SetContentText("Haz Click aqui!")
                                .SetSound(Android.Media.RingtoneManager.GetDefaultUri(Android.Media.RingtoneType.Notification));
    
                            NotificationManager notificacionManager = (NotificationManager)GetSystemService(Context.NotificationService);
                            notificacionManager.Notify(0, builder.Build());
    
                            //Guadar la fecha de la notificacion para asegura de no repetir la notificaciones
    
                            BaseDeDatos.Configuracion con = BD.GetConfiguracion();
                            con.Notificado = DateTime.Now.Date.ToString("dd/MM/yyyy");
                            BD.UpdateDatos(con);
    
    
    
                        }
                    }
    
                }
            }
    
        }

    Este seria el Binder

    public   class ServicioBinder : Binder
        {
    
            ServicioCobros service;
    
            public ServicioBinder(ServicioCobros service)
            {
                this.service = service;
            }
    
            public ServicioCobros GetService()
            {
                return service;
            }
        }

    Y esta la Conexión:

     public  class ServicioConnection : Java.Lang.Object, IServiceConnection
        {
            MainActivity activity;
    
            public ServicioConnection(MainActivity activity)
            {
                this.activity = activity;
            }
    
            public void OnServiceConnected(ComponentName name, IBinder service)
            {
                var ServiceBinder = service as ServicioBinder;
                if (ServiceBinder != null)
                {
                    activity.binder = ServiceBinder;
                    activity.isBound = true;
                }
            }
    
            public void OnServiceDisconnected(ComponentName name)
            {
                activity.isBound = false;
            }
        }

    No se lo que sucede en otras copilacion el funcionaba bien no tenia problema alguno y no le cambie codigo alguno para que fallara el servicio ayer intento rehacer el servicio copiando y pegando  el codigo  en otra clase con otro nombre  y funciono pero al seguir copilandola nuevamente regreso el fallo con el tiempo por eso pienso que es cosa de visual studio (2017). Se que es mucho codigo pero es la unica forma de que alguien vea lo que sucede, cualquier idea seria de mucha ayuda gracias de antemano
    lunes, 8 de enero de 2018 16:49

Todas las respuestas

  • Hola David_Aponte

    Lo que te recomiendo es que revises como lo pegaste en las demás clases, lo mas seguro es que tengas error dentro de ellas.

    Quedamos al pendiente de cualquier actualización de tu parte.

    Saludos Cordiales

    Gracias por usar los foros de MSDN.

    Pablo Rubio

     _____

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde. 

    Microsoft ofrece este servicio de forma gratuita, con la finalidad de ayudar a los usuarios y la ampliación de la base de datos de conocimientos relacionados con los productos y tecnologías de Microsoft.  

    Este contenido es proporcionado "tal cual" y no implica ninguna responsabilidad de parte de Microsoft.

    martes, 9 de enero de 2018 18:20
    Moderador
  • Lo pegue en otro proyecto exactamente igual y funciono veo que aveces debo copilar 2 veces porque da error la copilacion y luego funciona por eso pienso que es el visual studio..
    martes, 9 de enero de 2018 22:39
  • Quien me podría ayudar? aun no encuentro solución.....
    jueves, 18 de enero de 2018 7:57