2017-04-17 3 views
2

Actuellement, j'essaie de mettre en place un environnement de test à des fins de recherche. Ce que j'essaye de réaliser est la situation suivante: Je voudrais courir 3 applications androides et 1 app d'iOS using des émulateurs sur mon macbook. Ce sont des applications avec une interface similaire, mais un code différent derrière. Je voudrais commencer la même action sur tous les émulateurs en même temps, comme appuyer sur un bouton ou appeler une méthode. J'ai déjà essayé d'exécuter les applications sur les émulateurs et de les laisser écouter une valeur changeante dans une base de données en temps réel sur Firebase, donc chaque fois que j'ai changé la valeur dans Firebase, toutes les applications appellent la méthode. Le problème avec cette configuration est le délai entre les applications, car ils dépendent d'une connexion Internet stable.Comment déclencher la même action sur 3 émulateurs Android et 1 émulateur iOS en même temps?

Existe-t-il une autre solution pour déclencher l'action sur tous les émulateurs en même temps? J'apprécierais vraiment l'aide!

Merci

Modifier en fonction des réponses et commentaires: - Je voudrais choisir chaque fois que je veux exécuter l'action sur les applications. Cela signifie que par exemple un gestionnaire d'alarme est une solution moins préférable. - Je souhaite éviter les appels réseau externes.

Répondre

0

Vous pouvez réaliser ceci dans android en utilisant AlarmManager.

Il se déroulera à 18h32 (Réglez le temps futur et exécuter du code sur 3 émulateurs Android, assurez-vous que tous les appareils ont en même temps)

Calendar cur_cal = new GregorianCalendar(); 
cur_cal.setTimeInMillis(System.currentTimeMillis());//set the current time and date for this calendar 

Calendar cal = new GregorianCalendar(); 
cal.add(Calendar.DAY_OF_YEAR, cur_cal.get(Calendar.DAY_OF_YEAR)); 
cal.set(Calendar.HOUR_OF_DAY, 18); 
cal.set(Calendar.MINUTE, 32); 
cal.set(Calendar.SECOND, cur_cal.get(Calendar.SECOND)); 
cal.set(Calendar.MILLISECOND, cur_cal.get(Calendar.MILLISECOND)); 
cal.set(Calendar.DATE, cur_cal.get(Calendar.DATE)); 
cal.set(Calendar.MONTH, cur_cal.get(Calendar.MONTH)); 
Intent intent = new Intent(ProfileList.this, IntentBroadcastedReceiver.class); 
PendingIntent pintent = PendingIntent.getService(ProfileList.this, 0, intent, 0); 
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE); 
alarm.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), pintent); 
+0

Merci pour la réponse, je l'apprécie vraiment! J'aime la solution de gestionnaire d'alarme mais je voudrais appeler l'action sur les applications quand je veux, pas par un moment fixe dans le temps ... –

1

1) Essayez d'utiliser GCM/FCM et envoyer commande du serveur à tous les émulateurs/périphériques et appelle la méthode sur cette commande GCM. 2) Régler l'alarme en utilisant le gestionnaire d'alarme pour l'heure donnée et appeler une méthode à ce moment-là.

+1

merci pour la réponse, vraiment l'apprécier! Le GCM/FCM ne s'appuie-t-il pas également sur un réseau stable? Et j'aime la solution du gestionnaire d'alarme, mais je voudrais appeler l'action sur les applications quand je veux, pas par un moment fixe dans le temps ... –