IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Synchronisation application Android


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut Synchronisation application Android
    Bonjour,

    Actuellement, je travaille sur une application qui appel un service web afin de récupérer des information d'un utilisateur passé en paramètre et ça marche. Ensuite j'ai eu une autre idée j'aimerai que mon application reçoit l'information dés que l'une des informations de l'utilisateur change c'est à dire comme une application mail dés que on reçoit un mail il y a une petite information à coté de l’icône de l'application qui nous informes de la nouvelle information.

    Au début, j'ai utilisé les notifications mais c'est statiques j'ai voulu quelque chose de dynamique j'ai cherché sur les forum ils disent d'utiliser les services je me suis documenté, je sens que je devient ennuyeux maintenant

    Ma question : pourrait-je avoir un coup de main discuter un peu de l'architecture comment ça fonctionne ou bien un simple exemple pour commencer

    merci

  2. #2
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    Au début, j'ai utilisé les notifications mais c'est statiques j'ai voulu quelque chose de dynamique
    Qu'est ce que tu entends par statique/dynamique, synchrone/asynchrone ?

  3. #3
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Bonjour,

    Je dis pas que c'est la meilleure solution, mais je vais dire comment moi je ferais.

    Je ferais un Widget pour l'affichage de l'indication de mise à jour, qui serait déclenché par un certains type d'intention (persos à l'application).
    Ensuite je ferais un Service, qui effectueras périodiquement la vérification de modifications du profil et dans le cas d'une modification diffuserait l'intention.

    Je pense que cette solution est valable.

  4. #4
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par _Xavier_ Voir le message
    Qu'est ce que tu entends par statique/dynamique, synchrone/asynchrone ?
    Bonsoir,

    J'ai voulu dire par dynamique le faite d'avoir une mis à jours de l'utilisateur l'information sera envoyé directement à l'application comme l'application mail

  5. #5
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Bonjour,

    Je dis pas que c'est la meilleure solution, mais je vais dire comment moi je ferais.

    Je ferais un Widget pour l'affichage de l'indication de mise à jour, qui serait déclenché par un certains type d'intention (persos à l'application).
    Ensuite je ferais un Service, qui effectueras périodiquement la vérification de modifications du profil et dans le cas d'une modification diffuserait l'intention.

    Je pense que cette solution est valable.
    Bonsoir,

    Désole mais j'ai commencé avec android ça fait un mois alors je n'ai pas toute les notions, concepts et techniques :-(
    moi j'ai pensé que mon application reste en cours d'exécution et par exemple à chaque 10 min elle un appel le service web car l'information ne peut être envoyé que lorsque l'application demande le service

    si c'est possible pouviez vous m'expliquer un peu plus votre idée ou m'orienté vers un tuto

  6. #6
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Je vais essayer d'expliquer un peu plus.

    L'idée c'est de faire un Service http://developer.android.com/referen...p/Service.html (du coup il s'exécutera en tâche de fond), qui exécutera une tâche (appel au webservice) périodiquement, si il trouve des modifications il va diffuser une intention par le biais de la méthode "sendBroadcast".

    Cette diffusion d'intention va déclencher le Widget (http://developer.android.com/referen...tProvider.html) qui est un BroadcastReceiver. Le widget lui servira à afficher les informations (comme pour le SMS unread ou Gmail unread).

    Pour les Service voici un excellent tutos http://blog.developpez.com/android23...on-de-service/ (je pense que l'exemple "BackgroundService" peut-être utile et aussi la partie expliquant comment démarrer le service au démarrage du mobile grâce à un BroadcastReceiver).
    Pour le Widget la page du DebGuide est plutôt complète http://developer.android.com/guide/t...ets/index.html

    Je pense qu'avec ça vous devriez avoir la base, n'hésitez pas en cas de problème.

  7. #7
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Je vais essayer d'expliquer un peu plus.

    L'idée c'est de faire un Service http://developer.android.com/referen...p/Service.html (du coup il s'exécutera en tâche de fond), qui exécutera une tâche (appel au webservice) périodiquement, si il trouve des modifications il va diffuser une intention par le biais de la méthode "sendBroadcast".

    Cette diffusion d'intention va déclencher le Widget (http://developer.android.com/referen...tProvider.html) qui est un BroadcastReceiver. Le widget lui servira à afficher les informations (comme pour le SMS unread ou Gmail unread).

    Pour les Service voici un excellent tutos http://blog.developpez.com/android23...on-de-service/ (je pense que l'exemple "BackgroundService" peut-être utile et aussi la partie expliquant comment démarrer le service au démarrage du mobile grâce à un BroadcastReceiver).
    Pour le Widget la page du DebGuide est plutôt complète http://developer.android.com/guide/t...ets/index.html

    Je pense qu'avec ça vous devriez avoir la base, n'hésitez pas en cas de problème.
    Je vous remercie je commence toute de suite.

  8. #8
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    Bonsoir,

    J'ai voulu dire par dynamique le faite d'avoir une mis à jours de l'utilisateur l'information sera envoyé directement à l'application comme l'application mail
    Ben cela colle aussi parfaitement avec les notifications comme d'ailleurs le widget que t'as proposé Aerinder .

    La seule différence c'est que l'un se retrouve sur ton HomeScreen tandis que l'autre se trouve sur ta barre des tâches , ce qui fait que lorsque tu as une application lancé tu verras l'un mais pas l'autre , le mieux en mon sens serait d'avoir les deux disponibles .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  9. #9
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Merci pour vos réponse,

    Maintenant je vais commencé avec les tuto sur les services et le widget pour comprendre leur fonctionnement après je essayé de les intégrés dans mon application

    pourrai-je par la suite vous sollicitez en cas de souci dans mon application ?

    merci,

  10. #10
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    pourrai-je par la suite vous sollicitez en cas de souci dans mon application ?
    Le Forum est fait pour cela ( l'entraide). Donc n'hésite pas .
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  11. #11
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut the applications has stopped...
    bonsoir,

    Désolé pour le dérangement pendant ce jour fériée :-)

    J'ai suivi le tuto sur les servies que Aerinder là posté http://blog.developpez.com/android23...on-de-service/ et j'ai essayé de l'appliqué à mon application mais malheureusement il y a une erreur de ce type qui s'affiche the application <nom_de_mon_application> has stopped unexpectedly

    si j'enlève cette partie dans mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    BackgroundService.getService().addListener(new IBackgroundServiceListener() {  
    			public void dataChanged(final Object o) { 
    				WS_SAP_activity.this.runOnUiThread(new Runnable() { 
    					public void run() { 
    						// Mise à jour de l'UI 
    						tf.setText(BackgroundService.CallWS());
    					} 
    				}); 
    			}});
    l'erreur disparait mais je n'aurais pas le résultat voulu. mon but c'est d'appeler un service web à chaque 1 min a fin qu'il ma le résultat dans le champs que je lui assignée.

    voici mon activity :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    public class WS_SAP_activity extends Activity implements View.OnClickListener, IBackgroundServiceListener {
     
     
    	private Button mButton; 
     
    	private TextView tf;
     
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
     
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.main);
     
    		mButton =(Button) findViewById(R.id.button1);
    		tf=(TextView) findViewById(R.id.editText2);
     
    		mButton.setOnClickListener(this);
     
     
    		BackgroundService.getService().addListener(new IBackgroundServiceListener() {  
    			public void dataChanged(final Object o) { 
    				WS_SAP_activity.this.runOnUiThread(new Runnable() { 
    					public void run() { 
    						// Mise à jour de l'UI 
    						tf.setText(BackgroundService.CallWS());
    					} 
    				}); 
    			}});
     
     
    	}
     
    	@Override
    	public void onClick(View v) {
     
    		//		Intent intent = new Intent(this,BackgroundService.class); 
    		//		startService(intent);
    		startService(new Intent(WS_SAP_activity.this, BackgroundService.class));
    		tf.setText(BackgroundService.CallWS());
     
     
    	}
     
     
     
     
    	@Override
    	public void dataChanged(Object o) {
    		// TODO Auto-generated method stub
     
    	}
    }
    voici mon service

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    public class BackgroundService extends Service implements IBackgroundService{
     
    	private static final int START_NOT_STICKY = 0;
     
     
     
    	private List<IBackgroundServiceListener> listeners = null;
     
    	private static IBackgroundService service;
     
    	private Timer timer ; 
     
    	@Override
    	public void onCreate() { 
    		super.onCreate(); 
    		timer = new Timer(); 
    		service = this;
    		Log.d(this.getClass().getName(), "onCreate"); 
    	}
     
    	public static IBackgroundService getService() { 
            return service; 
        }
     
    	public int onStartCommand(Intent intent, int flags, final int startId) { 
    		Log.d(this.getClass().getName(), "onStart"); 
    		timer.scheduleAtFixedRate(new TimerTask() { 
    			public void run() { 
    				// Executer de votre tâche 
    				CallWS();
    			} 
    		}, 0, 60000); 
     
    		return START_NOT_STICKY;
     
    	} 
     
    	public static String CallWS()
    	{
    		String rs="";
     
    		try {
    			// Create SOAP request
     
    			SoapObject request = new SoapObject(NAMESPACE,"Zmafonctionsws2");
    			request.addProperty("Nom", "FHUYNH");
    			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    			envelope.setOutputSoapObject(request);
    			HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    			androidHttpTransport.call(SOAP_ACTION, envelope);
    			// Get response from envelope
    			Object result1 = envelope.getResponse();
    			SoapObject body = (SoapObject)envelope.bodyIn;
    			String result = (String)body.getProperty("WiCount").toString();
    			// Display result
    			rs=result;
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		return rs;
    	}
     
    	@Override 
    	public void onDestroy() { 
    		 this.listeners.clear(); 
    		    this.timer.cancel(); 
    		    Log.d(this.getClass().getName(), "onDestroy");
    	} 
     
    	@Override
    	public IBinder onBind(Intent arg0) {
    		// TODO Auto-generated method stub
    		return null;
    	}
     
     
     
    	@Override
    	public void addListener(IBackgroundServiceListener listener) {
    		// TODO Auto-generated method stub
    		if(listeners == null){ 
    	        listeners = new ArrayList<IBackgroundServiceListener>(); 
    	    } 
    	    listeners.add(listener); 
     
    	}
     
    	@Override
    	public void removeListener(IBackgroundServiceListener listener) {
    		// TODO Auto-generated method stub
    		if(listeners != null){ 
    	        listeners.remove(listener); 
    	    } 
     
    	}
    	// Notification des listeners 
    	private void fireDataChanged(Object data){ 
    	    if(listeners != null){ 
    	        for(IBackgroundServiceListener listener: listeners){ 
    	            listener.dataChanged(data); 
    	        } 
    	    } 
     
    	}
    }

    merci,

  12. #12
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Il faudrait le logcat pour être sur mais je pense que c'est un NullPointerException, sur l'appel de BackgroundService.getService() puisque le service n'est pas encore lancé.

    Pourquoi appelé directement "CallWS" dans l'Activité, le but était de séparer l'appel, pour que le service effectue les appels et la vue (par notification, listener ou intention (brodcastreceiver)) affiche les modifications.

  13. #13
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Il faudrait le logcat pour être sur mais je pense que c'est un NullPointerException, sur l'appel de BackgroundService.getService() puisque le service n'est pas encore lancé.

    Pourquoi appelé directement "CallWS" dans l'Activité, le but était de séparer l'appel, pour que le service effectue les appels et la vue (par notification, listener ou intention (brodcastreceiver)) affiche les modifications.
    Bonjour,

    Merci pour votre réponse

    Moi aussi j'ai remarqué que le service ne se lance que lorsque j'appuie sur le bouton et moi j'aimerai que mon service se lance dés que l'application se lance après il m'affiche le résultat sur le champ texte

    je met en pièce-jointe l'imprime écrans du logcat
    Images attachées Images attachées  

  14. #14
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Pour le service c'est normal puisque le lancement de celui-ci est dans le onClick peut-être déporter le lancement dans le onCreate ou dans l'activité (main) de l'application, ou en écoutant le démarrage du mobile (en écoutant le boot completed).

    Ensuite dans l'activité il faut pas appeler "BackgroundService.CallWS()", mais dans cette méthode appeler le "fireDataChanged(Object data)" en y passant le résultat du webservice.

    Et remplacer la mise à jour par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void dataChanged(final Object o) { 
                    WS_SAP_activity.this.runOnUiThread(new Runnable() { 
                        public void run() { 
                            // Mise à jour de l'UI 
                            tf.setText((String) o); // faire attention au cast (il faut envoyer un string dans le fireDataChanged
                        } 
                    }); 
                }});
    Sinon le logcat fournit ne contient pas d'erreur, il faudrait le prendre au moment du plantage.

  15. #15
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Pour le service c'est normal puisque le lancement de celui-ci est dans le onClick peut-être déporter le lancement dans le onCreate ou dans l'activité (main) de l'application, ou en écoutant le démarrage du mobile (en écoutant le boot completed).

    Ensuite dans l'activité il faut pas appeler "BackgroundService.CallWS()", mais dans cette méthode appeler le "fireDataChanged(Object data)" en y passant le résultat du webservice.

    Et remplacer la mise à jour par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void dataChanged(final Object o) { 
                    WS_SAP_activity.this.runOnUiThread(new Runnable() { 
                        public void run() { 
                            // Mise à jour de l'UI 
                            tf.setText((String) o); // faire attention au cast (il faut envoyer un string dans le fireDataChanged
                        } 
                    }); 
                }});
    Sinon le logcat fournit ne contient pas d'erreur, il faudrait le prendre au moment du plantage.
    excuse moi mais j'ai pas bien compris qu'est ce que vous voulez dire
    est ce que je doit appeler
    fireDataChanged(Object data)
    dans la méthode run je n'ai pas bien saisi pouviez me détaillé un peu plus

    merci

  16. #16
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Voici les modifications que j'ai effectué

    dans la class activity :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    startService(new Intent(WS_SAP_activity.this, BackgroundService.class));
     
    		BackgroundService.getService().addListener(new IBackgroundServiceListener() {  
    			public void dataChanged(final Object o) { 
    				WS_SAP_activity.this.runOnUiThread(new Runnable() { 
    					public void run() { 
    						// Mise à jour de l'UI 
    						tf.setText((String) o );
    					} 
    				}); 
    			}});
    dans la classe service

    dans la méthode CallWS j'ai fait appel à fireDataChanged(String o)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    public  String CallWS()
    	{
    		String rs="";
     
    		try {
    			// Create SOAP request
     
    			SoapObject request = new SoapObject(NAMESPACE,"Zmafonctionsws2");
    			request.addProperty("Nom", "FHUYNH");
    			SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
    			envelope.setOutputSoapObject(request);
    			HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
    			androidHttpTransport.call(SOAP_ACTION, envelope);
    			// Get response from envelope
    			Object result1 = envelope.getResponse();
    			SoapObject body = (SoapObject)envelope.bodyIn;
    			String result = (String)body.getProperty("WiCount").toString();
    			// Display result
    			rs=result;
    			fireDataChanged(rs);
     
    		} catch (Exception e) {
    			e.printStackTrace();
    		}
     
    		return rs;
    	}
    j'ai exécuter l'application mais c'est encore la même erreur "application ...."

    merci,

  17. #17
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Il nous faut le logcat de l'erreur, pour vraiment voir ce qu'il se passe, il y a forcément une Exception.

  18. #18
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Il nous faut le logcat de l'erreur, pour vraiment voir ce qu'il se passe, il y a forcément une Exception.
    en faite je crois qu'il faut attendre que le service récupère le résultat, car quand j'exécute mon application le message d'erreur s'affiche, alors j'ai vérifier est ce que mon service est entrain de tourner en allant à setting->application->running services et je vois qu'il est entrain de se redémarrer dés qu'il démarre je retourne à mon application et ça fonctionne
    c'est ça que j'ai pu interpréter, mais j'attends la confirmation d'un expert :-)

  19. #19
    Membre actif
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2005
    Messages
    103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2005
    Messages : 103
    Points : 203
    Points
    203
    Par défaut
    Faudrait quand même le logcat (avec les erreurs), pour voir ce qui plante, le but c'est que le service ce lance en tache de fond, que l'activité s'abonne au service (par le listener) et que quand le service exécute sa tâche (planifié), il informe l'activité par le biais du fireDataChanged.

    La définition du service dans le manifest aussi pour voir.

  20. #20
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 97
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Aerinder Voir le message
    Faudrait quand même le logcat (avec les erreurs), pour voir ce qui plante, le but c'est que le service ce lance en tache de fond, que l'activité s'abonne au service (par le listener) et que quand le service exécute sa tâche (planifié), il informe l'activité par le biais du fireDataChanged.

    La définition du service dans le manifest aussi pour voir.
    Ok, voici mon fichier manifest et logcat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.kalydia"
          android:versionCode="1"
          android:versionName="1.0">
     
     
        <application android:label="@string/app_name" android:icon="@drawable/kalydia">
            <activity android:name=".WS_SAP_activity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <service android:name="BackgroundService">
            <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </service>
            <receiver android:name="ReceiverWF"></receiver>
     
        </application>
         <uses-permission android:name= "android.permission.INTERNET" ></uses-permission>
    </manifest>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    06-03 12:26:08.926: WARN/PackageManager(65): Code path for pkg : com.kalydia changing from /data/app/com.kalydia-1.apk to /data/app/com.kalydia-2.apk
    06-03 12:26:08.926: WARN/PackageManager(65): Resource path for pkg : com.kalydia changing from /data/app/com.kalydia-1.apk to /data/app/com.kalydia-2.apk
    06-03 12:26:08.936: INFO/ActivityManager(65): Force stopping package com.kalydia uid=10038
    06-03 12:26:09.246: INFO/installd(35): move /data/dalvik-cache/data@app@com.kalydia-2.apk@classes.dex -> /data/dalvik-cache/data@app@com.kalydia-2.apk@classes.dex
    06-03 12:26:10.188: INFO/ActivityManager(65): Force stopping package com.kalydia uid=10038
    06-03 12:26:11.046: INFO/ActivityManager(65): Start proc com.svox.pico for broadcast com.svox.pico/.VoiceDataInstallerReceiver: pid=272 uid=10028 gids={}
    06-03 12:26:11.746: WARN/RecognitionManagerService(65): no available voice recognition services found
    06-03 12:26:12.378: INFO/installd(35): unlink /data/dalvik-cache/data@app@com.kalydia-1.apk@classes.dex
    06-03 12:26:12.556: INFO/ActivityThread(272): Publishing provider com.svox.pico.providers.SettingsProvider: com.svox.pico.providers.SettingsProvider
    06-03 12:26:12.716: INFO/AndroidRuntime(120): NOTE: attach of thread 'Binder Thread #3' failed
    06-03 12:26:16.235: INFO/ActivityManager(65): Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.kalydia/.WS_SAP_activity }
    06-03 12:26:16.496: INFO/AndroidRuntime(282): NOTE: attach of thread 'Binder Thread #3' failed
    06-03 12:26:17.409: INFO/ActivityManager(65): Start proc com.kalydia for activity com.kalydia/.WS_SAP_activity: pid=291 uid=10038 gids={3003, 1015}
    06-03 12:26:18.687: WARN/dalvikvm(291): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291): FATAL EXCEPTION: main
    06-03 12:26:18.726: ERROR/AndroidRuntime(291): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.kalydia/com.kalydia.WS_SAP_activity}: java.lang.NullPointerException
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.os.Handler.dispatchMessage(Handler.java:99)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.os.Looper.loop(Looper.java:123)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.ActivityThread.main(ActivityThread.java:4627)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at java.lang.reflect.Method.invoke(Method.java:521)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at dalvik.system.NativeStart.main(Native Method)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291): Caused by: java.lang.NullPointerException
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at com.kalydia.WS_SAP_activity.onCreate(WS_SAP_activity.java:40)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
    06-03 12:26:18.726: ERROR/AndroidRuntime(291):     ... 11 more
    06-03 12:26:18.795: WARN/ActivityManager(65):   Force finishing activity com.kalydia/.WS_SAP_activity
    06-03 12:26:19.516: WARN/ActivityManager(65): Activity pause timeout for HistoryRecord{43f994c8 com.kalydia/.WS_SAP_activity}
    06-03 12:26:19.625: INFO/ActivityManager(65): Displayed activity com.android.launcher/com.android.launcher2.Launcher: 45996 ms (total 45996 ms)
    06-03 12:26:29.692: WARN/ActivityManager(65): Activity destroy timeout for HistoryRecord{43f994c8 com.kalydia/.WS_SAP_activity}
    06-03 12:26:38.686: WARN/ActivityManager(65): Timeout executing service: ServiceRecord{43fc9f00 com.kalydia/.BackgroundService}
    06-03 12:26:38.686: INFO/ActivityManager(65): Crashing app skipping ANR: ProcessRecord{43f883b0 291:com.kalydia/10038} Executing service com.kalydia/.BackgroundService
    06-03 12:31:18.845: INFO/Process(291): Sending signal. PID: 291 SIG: 9
    06-03 12:31:18.936: INFO/ActivityManager(65): Process com.kalydia (pid 291) has died.
    06-03 12:31:18.945: WARN/ActivityManager(65): Scheduling restart of crashed service com.kalydia/.BackgroundService in 600534ms

    merci,

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Intégration de Google Maps dans votre application Android
    Par michel.di dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 07/10/2011, 20h02
  2. Réponses: 0
    Dernier message: 12/08/2009, 11h06
  3. Réponses: 0
    Dernier message: 12/08/2009, 11h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo