Programación y Desarrollo para Android Subforo exclusivo para temas de programación de software para PDAs y desarrollo de aplicaciones, interfaces, etc bajo Android


 
Herramientas
  #1  
Viejo 23/03/15, 11:35:46
Avatar de DaSound
DaSound DaSound no está en línea
Desarrollador
Mensajes: 8,578
Compra y venta: (1)
 
Fecha de registro: oct 2008
Localización: Madrid
Mensajes: 8,578
Modelo de smartphone: iPhone X 256GB / iPad Pro 10.5 / iPhone 6s Plus /
Versión de ROM: iOS
Tu operador: Movistar
Mencionado: 68 comentarios
Tagged: 0 hilos
Notificaciones Android.

Muy buenas a todos compañeros!!

Veréis, estoy intentando meter un pequeño sistema de notificaciones a mi aplicación, pero me está fallando por un problema de sincronización entre objetos... el error que me da exactamente es:

Código:
illegalmonitorstateexception object not locked by thread before notifyall()
Y mira que he intantado sincronizar el notify(); con:
Código:
synchronized(this)
{
getNotificacion().notify();
}
Pues no hay manera... ese "this" lo he cambiado por getActivity(), el propio objeto desde donde se llama, un button, pero siempre me aparece el mismo error... ¿alguna idea?

Gracias de antemano!!

Última edición por DaSound Día 23/03/15 a las 14:03:10
Responder Con Cita


  #2  
Viejo 23/03/15, 12:12:49
Avatar de kriogeN
kriogeN kriogeN no está en línea
Colaborador/a
Mensajes: 4,637
Compra y venta: (1)
 
Fecha de registro: oct 2010
Localización: Murcia
Mensajes: 4,637
Modelo de smartphone: Samsung Galaxy S7 Edge SM-G935F
Versión de ROM: CM13 - CM 11
Tu operador: Vodafone
Mencionado: 60 comentarios
Tagged: 3 hilos
Las notificaciones no se muestran así, "notify()" es un método que tienen todos los objetos de Java, simplemente por ser objetos. Y sirve para notificar a objetos que están esperando después de un "wait()".

Además de que tu código no funcionarían en el "synchronized(object)" debe ir el mismo objeto que está haciendo el "notify()" o el "wait()". En este caso "synchronized(getNotificacion())". Pero ya te digo que eso no sirve para nada en tu caso, que quieres mostrar la notificación y no avisarla para que se despierte.

Sin saber que tipo de objeto devuelve "getNotificacion()" no puedo ayudarte más, sólo que te mires el tutorial oficial de Android Developers sobre notificaciones:

http://developer.android.com/guide/t...fications.html
Responder Con Cita
Gracias de parte de:
  #3  
Viejo 23/03/15, 13:15:47
Avatar de DaSound
DaSound DaSound no está en línea
Desarrollador
Mensajes: 8,578
Compra y venta: (1)
 
Fecha de registro: oct 2008
Localización: Madrid
Mensajes: 8,578
Modelo de smartphone: iPhone X 256GB / iPad Pro 10.5 / iPhone 6s Plus /
Versión de ROM: iOS
Tu operador: Movistar
Mencionado: 68 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Las notificaciones no se muestran así, "notify()" es un método que tienen todos los objetos de Java, simplemente por ser objetos. Y sirve para notificar a objetos que están esperando después de un "wait()".

Además de que tu código no funcionarían en el "synchronized(object)" debe ir el mismo objeto que está haciendo el "notify()" o el "wait()". En este caso "synchronized(getNotificacion())". Pero ya te digo que eso no sirve para nada en tu caso, que quieres mostrar la notificación y no avisarla para que se despierte.

Sin saber que tipo de objeto devuelve "getNotificacion()" no puedo ayudarte más, sólo que te mires el tutorial oficial de Android Developers sobre notificaciones:

http://developer.android.com/guide/t...fications.html

Agradezco mucho tu ayuda Kriogen, mira, te pego el código del método:

Código:
private Notification getDefaultNotification(Notification.Builder builder) {
        builder
            .setSmallIcon(R.drawable.ic_launcher)
            .setTicker("Optional ticker")
            .setWhen(System.currentTimeMillis())
            .setContentTitle("Default notification")
            .setContentText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.")
            .setContentInfo("Info");
 
            return builder.getNotification();
    }
Es que no había trabajado con notificaciones nunca... hago aplicaciones para empresa, y me ha surgido este problema tonto que no me deja seguir.

Cita:
Originalmente Escrito por kriogeN Ver Mensaje
Las notificaciones no se muestran así, "notify()" es un método que tienen todos los objetos de Java, simplemente por ser objetos. Y sirve para notificar a objetos que están esperando después de un "wait()".
Cita:
Originalmente Escrito por Google Developers
To issue the notification, you pass the Notification object to the system by calling NotificationManager.notify().
Esto es lo que pone en la documentación oficial de Google... pero así no me funciona!

Un saludo y gracias de nuevo!!

Última edición por DaSound Día 23/03/15 a las 13:19:51
Responder Con Cita
  #4  
Viejo 23/03/15, 13:31:35
Avatar de mocelet
mocelet mocelet no está en línea
Desarrollador
Mensajes: 2,203
 
Fecha de registro: may 2011
Localización: Madrid
Mensajes: 2,203
Tu operador: -
Mencionado: 17 comentarios
Tagged: 2 hilos
La documentación está mal, no es notify() sin parámetros, es notify del NotificationManager que le pasas el id y el objeto Notification: http://developer.android.com/referen....Notification)

P.D. Los ejemplos sí están bien

Última edición por mocelet Día 23/03/15 a las 13:35:23
Responder Con Cita
Gracias de parte de:
  #5  
Viejo 23/03/15, 14:00:56
Avatar de DaSound
DaSound DaSound no está en línea
Desarrollador
Mensajes: 8,578
Compra y venta: (1)
 
Fecha de registro: oct 2008
Localización: Madrid
Mensajes: 8,578
Modelo de smartphone: iPhone X 256GB / iPad Pro 10.5 / iPhone 6s Plus /
Versión de ROM: iOS
Tu operador: Movistar
Mencionado: 68 comentarios
Tagged: 0 hilos
Cita:
Originalmente Escrito por mocelet Ver Mensaje
La documentación está mal, no es notify() sin parámetros, es notify del NotificationManager que le pasas el id y el objeto Notification: http://developer.android.com/referen....Notification)

P.D. Los ejemplos sí están bien
Según volvía a responder, ya he visto tu respuesta... exacto, `para mostrarla debe hacerse con el notify(int,mBuilder.build()); Con eso he conseguido mostrar la notificación de forma correcta.

Gracias a ambos compañeros, ya tengo la app mostrando notificaciones!

Un saludo.
Responder Con Cita
Respuesta

Estás aquí
Regresar   HTCMania > Todo sobre Android > Programación y Desarrollo para Android


Reglas de Mensajes
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Las caritas están On
Código [IMG] está On
Código HTML está Off

Saltar a Foro



Hora actual: 21:32:42 (GMT +2)

Cookies settings
Powered by vBulletin™
Copyright © vBulletin Solutions, Inc. All rights reserved.
 
HTCMania: líderes desde el 2007