Maison > Questions et réponses > le corps du texte
P粉5503233382023-09-06 00:32:52
Ce que tu veux faire est vraiment difficile. La synchronisation d'un tel appareil est difficile. Faire cela est presque impossible lorsque vous ne possédez pas et ne contrôlez pas le matériel. Franchement, je ne pense pas que vous obtiendrez jamais ce que vous voulez.
Les horodatages ne fonctionneront jamais. D’une part, ces appareils n’auront pas tous le même timing. Ils seront tous légèrement décalés. Votre prochaine idée est de leur envoyer l'heure à partir d'une source centrale telle que votre serveur. Le problème est que l’envoi de données à chaque appareil prendra un temps différent et aléatoire. Vous pouvez essayer de deviner la latence en pré-calculant le temps aller-retour pour une douzaine de paquets, mais cela reste une estimation et peut ne pas être précis pour le paquet suivant. NTP permet de maintenir les heures des appareils proches de la même heure, mais pas aussi précises que vous le souhaiteriez.
Même s'il atteint la précision souhaitée, Android n'est pas un système d'exploitation en temps réel. Ce n’est pas le cas avec l’iPhone. Même si vous réglez votre alarme sur 12:00:00, elle ne se déclenchera pas à 12:00:00.000 exactement. Quelque temps après, il se déclenchera lorsque le système d'exploitation aura du temps d'inactivité, des cœurs inactifs et considérera votre application comme l'application planifiée la plus importante. Cela peut prendre des centaines de millisecondes. Il existe des systèmes d'exploitation qui peuvent vous donner la promesse que vous souhaitez. Connus sous le nom de systèmes d'exploitation en temps réel, ils sont souvent utilisés dans des appareils embarqués qui ne peuvent pas tomber en panne, tels que les équipements médicaux et les contrôleurs de machines coûteuses. Il s’agit d’une approche complètement différente de l’écriture de systèmes d’exploitation par rapport à celles utilisées par les appareils grand public.
Je recommande vraiment de repenser vos besoins et d’être plus réaliste à leur sujet. Il existe des technologies qui vous permettent d'obtenir ce que vous voulez, mais pas sur du matériel aléatoire sur des systèmes d'exploitation grand public sur Internet.
De plus, si vous souhaitez faire cela, je ne recommande vraiment pas d'utiliser React Native, il exécute l'interpréteur dans un langage ramassé et a un timing très aléatoire. Vous souhaiterez au moins écrire votre lanceur en C, car c'est l'approche la plus prévisible.
Mais vraiment, veuillez reconsidérer vos besoins. Pourquoi doit-il démarrer dans les 50 millisecondes ? Lorsque vous faites des choses sur Internet, est-ce vraiment important si les gens sont désynchronisés pendant une seconde ?