Maison >interface Web >Questions et réponses frontales >Questions d'entretien Android : quatre éléments principaux
Recommandé : "Collection de questions d'entretien Android 2020 [Collection] "
Qu'elle soit au premier plan, visible par l'utilisateur ou non
A rappellera onPause()>>onStop(), transparent n'appellera pas onStop() et la boîte de dialogue n'appellera pas onPause() et onStop()
Cette méthode sera appelée lorsque l'activité est accidentellement détruite puis recréée. Par exemple, le basculement entre les écrans horizontaux et verticaux entraînera la recréation de l'activité. La méthode onSaveInstanceState() est appelée avant. onStop() pour enregistrer l'état de l'activité actuelle. Lorsque l'activité est recréée, onRestoreInstanceState() sera appelé pour restaurer l'état de l'activité onRestoreInstanceState() est appelé avant onStart().
Il n'y a pas d'ordre fixe dans lequel les deux sont exécutés.
Le moment du déclenchement de la méthode onsavedinstance (Bundle savinginstancestate). Le scénario typique consiste à appuyer sur le bouton d'accueil ou à changer d'activité. Cependant, si vous appuyez sur le bouton de retour pour quitter le programme, cela peut être détruit. La méthode ne sera pas appelée, adaptée à la sauvegarde de certaines données non persistantes (c'est-à-dire les données qui doivent être stockées pendant l'exécution du programme).
Onpause() doit être appelé qu'il s'agisse de détruire ou de quitter le programme. Il convient à la sauvegarde de données persistantes. Cependant, Android lui-même ne fournit pas de paramètre bundle pour cette méthode, nous pouvons donc choisir de créer un. variable statique ou Il fournit une préférence partagée en tant que support de données.
Lors de l'enregistrement de chaque activité dans le fichier manifeste, écrivez
android:configChanges="XXX"
Par exemple, basculer entre les écrans horizontaux et verticaux : android:configChanges=" orientation"
1. Lorsque l'application est en arrière-plan et est recyclée par le système, le processus de l'application est interrompu, l'activité est également recyclée et les piles de tâches et d'activités de l'application ainsi que les intentions et données correspondantes seront enregistrées par le système. Lorsque l'application revient au premier plan, le système restaure les piles de tâches et d'activités ainsi que les intentions et les données correspondantes.
2. Ne stockez pas de données dans la classe Application et la classe singleton globale, car cela empêcherait l'application de restaurer son état correctement. Les données temporaires pendant l'exécution doivent être stockées dans SharedPreference, des fichiers temporaires ou des bases de données
3 Le mécanisme d'intention fourni par le système doit être utilisé pour transférer des données entre les activités.
https://blog.csdn.net/mountain_hua/article/details/81481242
Réutilisation du haut de la pile : résolvez le problème de l'ouverture répétée de l'activité.
Réutilisation dans la pile : lorsqu'une pile de tâches appelle l'activité d'un autre programme, comme suit :
En modes singleTop et singleTask, il existe une activité correspondante et la fonction onNewIntent() de l'activité sera appelée.
Intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Spécifiez le mode singleTask, qui a le même effet que de spécifier android:launchMode "singleTask" dans AndroidManifest.xml
Intent.addFlags (Intent .FLAG_ACTIVITY_SINGLE_TOP);
//Spécifiez le mode singleTop, qui a le même effet que de spécifier android:launchMode "singleTop" dans AndroidManifest.xml
Intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//A ceci Lorsque l'activité marquée est démarrée, elle se trouve dans la même pile de tâches, donc l'activité au-dessus d'elle sera retirée de la pile. Elle apparaîtra généralement avec le mode singleTask
Intent.addFlags. (Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
// Les activités avec cet indicateur n'apparaîtront pas dans la liste historique des activités. Cela équivaut à spécifier android : exclureFromRecents="true"
dans AndroidManifest.xml La priorité du bit d'indicateur. est supérieure à la priorité spécifiée dans AndroidManifest
SingleTask et taskAfiinity sont utilisés ensemble
https://www.jianshu.com/p/9ecea420eb52
La figure suivante décrit très bien la relation entre le cycle de vie d'un fragment et d'une activité
1. Commençons par les bases ---> Cycle de vie
L'activité a 7 cycles de vie : onCreate(); ; onDestroy(); onRestart();
Fragment a 11 cycles de vie : onAttach(); onCreateView(); (); onDestroyView(); onDestroy(); onDetach();
Donc Fragment est plus flexible que Activity car il y a plus de cycles de vie et vous avez plus de contrôle.
2. En termes de flexibilité
L'activité est l'un des quatre composants majeurs. C'est le support de chaque page. L'affichage du fragment dépend de l'activité. de Fragment Vous pouvez le découvrir au cours du cycle.
Fragment est un petit fragment un par un
1) Par rapport à l'activité, il est plus flexible. Il peut être écrit directement dans le fichier XML ou ajouté dynamiquement dans l'activité
.2) Vous pouvez utiliser show()/hide() ou replace() pour changer de fragment à tout moment, et il n'y aura aucun effet évident lors du changement, et l'expérience utilisateur sera meilleure bien que l'activité puisse également être modifiée ; , mais le passage d'une activité à l'autre aura des changements de page évidents ou d'autres effets, et le changement d'une petite partie du contenu ne donnera pas une bonne impression à l'utilisateur.
L'affichage du Fragment dépend de l'activité, qui peut être comprise à partir du cycle de vie du Fragment.
Similaire à la barre de menu sous WeChat, ainsi qu'à l'adaptation des téléphones mobiles et des tablettes, etc.
https://www.cnblogs.com/huihuizhang/p/7623760.html
start est démarré directement et lié est lié à l'activité en cours.
Si un service est démarré et lié à nouveau, le service s'exécutera toujours en arrière-plan. Et quelle que soit la manière dont il est appelé, onCreate ne sera toujours appelé qu'une seule fois, correspondant au nombre de fois que startService est appelé, onStart de Service sera appelé autant de fois. L’appel de unbindService n’arrêtera pas le service, mais doit appeler stopService ou stopSelf du service pour arrêter le service.
https://blog.csdn.net/geyunfei_/article/details/78851024
Le service s'exécute dans le thread principal. Généralement, les opérations fastidieuses ne peuvent pas être effectuées dans le service. Si nécessaire, vous pouvez utiliser le service distant pour démarrer un nouveau processus.
AlarmManager donne accès aux services d'alarme du système. Ceux-ci vous permettent d'exécuter l'application à un moment donné dans le futur. Lorsqu'une alerte retentit, le système diffuse l'intention enregistrée et lance automatiquement l'application cible si elle n'est pas déjà en cours d'exécution. Les alarmes enregistrées sont conservées pendant que l'appareil est en veille (avec la possibilité de le réveiller en cas de dysfonctionnement de l'appareil pendant cette période), mais sont effacées si l'appareil est éteint et redémarré. Le gestionnaire d'alarmes maintient un wakelock du processeur tant que la méthode onReceive() du récepteur d'alarme est en cours d'exécution. Cela garantit que le téléphone ne se mettra pas en veille tant que vous n'aurez pas fini de traiter la diffusion. Une fois onReceive() renvoyé, le gestionnaire d'alarmes libérera ce wakelock. Cela signifie que, dans certains cas, le téléphone se mettra en veille dès que la méthode onReceive() sera terminée. Si votre récepteur d'alerte appelle Context.startService(), le téléphone peut se mettre en veille avant de démarrer le service demandé. Pour éviter que cela ne se produise, votre BroadcastReceiver et votre service devront mettre en œuvre une politique de wakelock distincte pour garantir que le téléphone continue de fonctionner jusqu'à ce que le service soit disponible.
Le service de premier plan est un service visible par les utilisateurs, qui peut être créé sous forme de notifications
ActivityManagerService (ci-après dénommé AMS) est le service de base d'Android. Il est principalement responsable du démarrage, de la commutation, de la planification des quatre composants principaux du système ainsi que de la gestion et de la planification des processus d'application. les responsabilités sont les mêmes que celles des processus dans le système d'exploitation. Les modules de gestion et de planification sont similaires, c'est donc très important sous Android
onStartCommand
, retournez <code><strong>START_STICKY</strong>
START_STICKY
StartCommand()
dans
START_STICKY
onStartCommand()
Le système recrée le service et appelle la méthode intent
, mais ne transmet pas le dernier intent
passé, juste un intent
vide. À moins qu'il n'y ait des intent
à adopter, alors ces START_NOT_STICKY
intent
Le système ne recrée pas le service sauf s'il y a un START_REDELIVER_INTENT
onStartCommand()
Le système recrée le service et appelle la méthode intent
, en transmettant le dernier intent
passé. Les Augmenter la priorité du service
Les services de premier plan sont considérés comme étant utilisés pour les services en cours d'exécution connus et ne seront pas supprimés en premier lorsque le système doit libérer de la mémoire. le processus.Envoyez une diffusion dans onDestory() pour vous ouvrir
ondestory()
méthode service+broadcast, c'est-à-dire que lorsque le service appelle
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!