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

Composants graphiques Android Discussion :

Appel de service crash si pas par bouton onclick


Sujet :

Composants graphiques Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut Appel de service crash si pas par bouton onclick
    Bonjour,

    Nouveau probleme donc je prefere ouvrir un nouveau sujet. J'ai une activité et un service qui communiquent par aidl. J'ai un bouton avec "onclick" dans lesquel j'apel des fonctions du fichier aidl pout echanger des informations.
    Tout marche tres bien sauf que l'utilisateur doit clicker sur ce bouton juste pour faire "start", apres ca tourne tout seul. J'aimerais bien le mettre dans onResume de l'activity mais l'application crash dans ce cas la.

    Voici un lien vers l'exemple don't je me suis inspiré et qui à la même structure:
    http://marakana.com/forums/android/a...amples/48.html

  2. #2
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Bonjour,

    Afin de pouvoir t'aider, il nous faudrait un peu plus (le stack trace de ton exception, un bout de code que tu as actuellement et qui fait planter, etc).

    Merci.

  3. #3
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    Imonservice.aidl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    interface Imonservice {
    long etat_count();
    }
    monservice.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Override
    	public IBinder onBind(Intent intent) {
    		 return new Imonservice.Stub() {
     
    		      public long etat_count() throws RemoteException {
    		    	  long  compt = count_restant;
    		    	  return compt;
    		      }
                      };
    }
    monactivite.java (methode qui marche)
    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
    View.OnClickListener Demarre = new View.OnClickListener()
    	{
    	@Override
    	public void onClick(View view) {
    		rechargeMap(); 
    		try {
    			activity_count_restant=service.etat_count();
    			if (activity_count_run ==1){counter.cancel();}
    			counter = new MyCount(activity_count_restant,1000);
    	   	  	counter.start();
     
     
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
     
    	}
    	};
    monactivite.java (methode qui marche pas)
    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
     
    public void onResume() {
    		  super.onResume();
     
    try {
    			activity_count_restant=service.etat_count();
    			if (activity_count_run ==1){counter.cancel();}
    			counter = new MyCount(activity_count_restant,1000);
    	   	  	counter.start();
     
     
    		} catch (RemoteException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    }
    Ca crash avec n'importe quel "service.quelquechose" dès que je le met dans onResume ou onCreate.

    Pour le stack trace je ne sais pas encore comment on fait, j'ai du mal avec le debug.

  4. #4
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Sous Eclipse, les logs de la plateforme Android sous affichés dans la vue LogCat.
    (Window -> Show view -> other -> LogCat)

  5. #5
    Membre éprouvé Avatar de linked
    Profil pro
    Développeur Android
    Inscrit en
    Mai 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Android

    Informations forums :
    Inscription : Mai 2008
    Messages : 88
    Par défaut
    Ah j'ai un peu compris le debug, faut faire resume pour que ca crash, ca boquait tout le temps avant de crasher, voila les lignes rouges du logcat, ca appel d'autres fonctions du services que je n'ai pas cité pour simplifier mais le probleme est le même je pense:

    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
    06-07 14:13:17.795: ERROR/AndroidRuntime(225): Uncaught handler: thread main exiting due to uncaught exception
    06-07 14:13:17.915: ERROR/AndroidRuntime(225): java.lang.RuntimeException: Unable to resume activity {com.kamax.regnum_war_status/com.kamax.regnum_war_status.Regnum_war_status}: java.lang.NullPointerException
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2851)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2866)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2420)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread.access$2100(ActivityThread.java:116)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.os.Handler.dispatchMessage(Handler.java:99)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.os.Looper.loop(Looper.java:123)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread.main(ActivityThread.java:4203)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at java.lang.reflect.Method.invokeNative(Native Method)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at java.lang.reflect.Method.invoke(Method.java:521)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at dalvik.system.NativeStart.main(Native Method)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225): Caused by: java.lang.NullPointerException
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at com.kamax.regnum_war_status.Regnum_war_status.downloadMapText(Regnum_war_status.java:636)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at com.kamax.regnum_war_status.Regnum_war_status.rechargeMap(Regnum_war_status.java:706)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at com.kamax.regnum_war_status.Regnum_war_status.onResume(Regnum_war_status.java:451)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1225)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.Activity.performResume(Activity.java:3560)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2838)
    06-07 14:13:17.915: ERROR/AndroidRuntime(225):     ... 12 more
    edit: peut etre la facon don't je me connecte au service pose probleme ou n'est pas démarré correctement/fini.

    monactivite.java
    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
    	Imonservice service;
    	  monserviceConnection connection;
     
    	  class monserviceConnection implements ServiceConnection {
     
    	    public void onServiceConnected(ComponentName name, IBinder boundService) {
    	      service = Imonservice.Stub.asInterface((IBinder) boundService);
    	    }
     
    	    public void onServiceDisconnected(ComponentName name) {
    	      service = null;
    	    }
    	  }
     
    	  private void initService() {
    	    connection = new monserviceConnection();
    	    Intent i = new Intent();
    	    i.setClassName("com.kamax.regnum_war_status",com.kamax.regnum_war_status.monservice.class.getName());
    	    boolean ret = bindService(i, connection, Context.BIND_AUTO_CREATE);
    	    //debugtv.append("ret="+ret+"\n");
    	  }
     
    	  private void releaseService() {
    	    unbindService(connection);
    	    connection = null;
    	  }
    plus loins dans le même fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    /** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle icicle) {
    	super.onCreate(icicle);
    	setContentView(R.layout.main);
    	startService(new Intent(this, monservice.class));
            initService();
    edit 2:
    Quand je lance service.quelquechose par onResume, eclipse me marque que ca vaut null, par contre si je lance la même chose par un boutton c'est plus null du tout ,j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    service=Imonservice$Stub$Proxy
    contre
    quand ca marche pas avec onResume

    Edit 3: j'ai un peu mieux ciblé le probleme, onServiceConnected n'est pas lancé tant que je ne suis pas sorti de OnResume. J'ai mis un compteur à 2s apres le lancement de l'appli et ça marche comme rustine mais bon...pas tres propre tout ca je pense.

Discussions similaires

  1. Comment appeler un service WCF en httpget? par url?
    Par 404error dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/09/2009, 21h54
  2. [PHP-JS] appel fonction par bouton
    Par dimi2 dans le forum Langage
    Réponses: 16
    Dernier message: 01/07/2008, 19h30
  3. Appel JSFL par bouton
    Par carter15_2001 dans le forum Flash
    Réponses: 3
    Dernier message: 26/02/2008, 09h13
  4. Réponses: 1
    Dernier message: 12/02/2007, 15h22

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