当前位置:网站首页>Android Event Distribution Mechanism 5: interviewer, you sit, Android on the machine Interview Question

Android Event Distribution Mechanism 5: interviewer, you sit, Android on the machine Interview Question

2022-01-15 02:24:11 Mb61c1dbbb44788

D'accord..Cette approcheActivityReçudownEst appelé,C'est une méthode vide,Il faut que les développeurs réécrivent eux - mêmes. Les notes officielles indiquent que,C'est une méthode que nous utiliserons de toute façonC'est parti.AvecActivityAppelé lors de l'interaction.Le scénario le plus courant est l'épargnant d'écran:Quand nous n'avons pas travaillé pendant un certain temps, une image apparaîtra,Quand nous avons commencé à travailler avecActivityVous pouvez annuler l'épargnant d'écran dans cette méthode lorsque vous interagissez;Y a - t - il une autre action pour masquer automatiquement la barre d'outils,Vous pouvez ré - Afficher la barre d'outils dans cette méthode.

  1. Comme vous l'avez mentionné précédemment, il sera finalement distribué àviewGroup,AlorsviewGroupComment distribuer les événements?

viewGroupLe traitement de l'information sur l'événement se fait en trois étapes:Interception、Rechercher des sous - contrôles、Envoyer l'événement.

Il y a une règle importante dans la distribution des événements:Une séquence d'événements pour un contact ne peut être donnée qu'à un seulviewTraitement,Sauf dans des circonstances exceptionnelles.Donc siviewGroupConsommationdownÉvénements,Alors?viewAucun événement ne sera reçu.

viewGroupLa première étape consiste à déterminer si cet événement doit être distribué aux enfantsview,Si oui, appelezonInterceptTouchEventMéthode pour déterminer si une interception doit être effectuée. La deuxième étape est si cet événement estdownÉvénements,Il faut donc lui trouver un sous - contrôle qui consomme cet événement,Si vous le trouvez, créez unTouchTarget. La troisième étape consiste à envoyer l'événement,Si elle existeTouchTarget,Description l'enfant de la séquence des événements de consommation a été trouvéview,Directement à lui.Si ce n'est pas le cas, laissez - le vous - même.

  1. Comme vous l'avez dit plus tôt“Une séquence d'événements pour un contact ne peut être donnée qu'à un seulviewTraitement,Sauf dans des circonstances exceptionnelles”,Qu'y a - t - il d'inhabituel ici?Que faire en cas d'exception?

Il y a deux grandes anomalies ici:1.ParviewGroupInterception,2.D'autres conditions telles que le saut d'interface se produisent.

Lorsque le flux d'événements est interrompu,viewGroupEnvoie unACTION_CANCELL'événement arrive.view,Pour le moment, il faut faire quelques travaux de restauration de l'état,Comme mettre fin à l'animation,RepriseviewTaille, etc..

  1. En parlant deACTION_CANCELType,Pouvez - vous me dire quels autres types d'événements?

Sauf queACTION_CANCEL,D'autres types d'événements sont:

  • ACTION_MOVE:Cet événement se produit lorsque nos doigts glissent sur l'écran
  • ACTION_UP:Cet événement se produit lorsque nos doigts sont levés

En outre, les opérations Multi - doigts sont plus courantes:

  • ACTION_POINTER_DOWN: Quand un doigt est déjà pressé,L'événement se produit lorsque l'autre doigt est pressé
  • ACTION_POINTER_UP: Avec plusieurs doigts pressés en même temps,Soulever l'un des doigts provoque l'événement.

Une séquence complète d'événements est dérivée deACTION_DOWNC'est parti.,ÀACTION_UPOuACTION_CANCELFin. Un doigtLa séquence complète deACTION_DOWN/ACTION_POINTER_DOWNC'est parti.,ÀACTION_UP/ACTION_POINTER_UP/ACTION_CANCELFin.

  1. Oh, mon Dieu.?En parlant de doigts multiples,Tu sais quoi?ViewGroupEst la façon dont les événements générés par plusieurs doigts sont distribués avec précision à différents enfantsviewC'est ça?

Le problème, c'est queMotionEventEtViewGroupÀ l'intérieurTouchTarget.

ChaqueMotionEventContient des informations sur tous les contacts de l'écran actuel,Il a utilisé un tableau à l'intérieur pour stocker différents tactilesidLa valeur de coordonnées correspondante.

Quand un hommeviewConsommationdownAprès l'événement,ViewGroupPour ça.viewCréer unTouchTarget,C'estTouchTargetÇa inclutviewExemple et tactile deid.Tactile iciidÇa peut être plusieurs.,C'est unviewUne séquence d'événements qui accepte plusieurs contacts.

Quand unMotionEventÀ l'arrivée,ViewGroupL'information de contact est détachée,Et les envoyer séparément aux enfants intéressésview.Afin d'obtenir une transmission précise des informations de contact.

  1. C'est...viewPrise en charge du traitement de l'information multidirectionnelle?

ViewLa valeur par défaut n'est pas prise en charge.Il n'a pas passé l'index de contact quand il a obtenu l'information de contact,C'est - à - dire que l'acquisition estMotionEventInformations sur le premier contact dans le tableau interne.Il a besoin que nous réécrivions nos propres méthodes pour le soutenir.

  1. - Oui.…C'est...ViewComment gérer les événements tactiles?

Tout d'abord,,Il décidera s'il existeonTouchListener,L'existence appelle sononTouchComment gérer les événements.Si la méthode renvoietrueEnsuite, la distribution est terminée et vous retournez directement à.Et si l'auditeur estnullOuonTouchMéthode retournéefalse,Est appeléonTouchEventComment gérer les événements.

onTouchEventDeux types d'auditeurs sont pris en charge dans la méthode:onClickListenerEtonLongClickListener.ViewCes deux moniteurs sont appelés en fonction des différentes situations tactiles.En même tempsonTouchEventDans la méthode,Peu importe.viewOui Nonenable,Tant que c'est le cas.clickable,Sa méthode de distribution est le retourtrue.

En résumé:Appelez d'abordonTouchListener,RappelonClickListenerEtonLongClickListener.

  1. Vous avez parlé de la méthode de distribution et de la valeur de retour plusieurs fois auparavant,Pouvez - vous parler des principales méthodes et de la relation entre elles?

- Oui..Il y a trois approches fondamentales:dispatchTouchEvent、onInterceptTouchEvent、onTouchEvent.

En termes simples:dispatchTouchEventEst la méthode de distribution de base,Toute logique de distribution est exécutée dans cette méthode;onInterceptTouchEventInviewGroupIl est chargé de décider s'il faut intercepter;onTouchEventEst l'approche centrale des événements de consommation.viewGroupIl y a trois façons de,EtviewNon.onInterceptTouchEventMéthodes.

  • viewGroup
1.  viewGroupDedispatchTouchEventLa méthode a reçu un message d'événement,Je vais d'abord appeleronInterceptTouchEventDéterminer si un événement est intercepté
    *   Si l'interception,Appelez votre propreonTouchEventMéthodes
    *   Appelez l'enfant si vous ne l'interceptez pasviewDedispatchTouchEventMéthodes
2.  KoviewAucun événement de consommation,Alors appelezviewGroupEn soionTouchEvent
3.  Là - haut1、2Le résultat du traitement de STEP estviewGroupDedispatchTouchEventRésultat du traitement de la méthode,Pas de consommation, retour àfalseEt revenir au niveau supérieuronTouchEventTraitement,En cas de consommation, la distribution est terminée et retournéetrue.
  • view
1.  viewDedispatchTouchEventPar défautonTouchEventPour gérer les événements,RetourtrueReprésente un événement de consommation,RetourfalseIndique qu'il n'y a pas d'événement de consommation
2.  No1Le résultat de STEP estdispatchTouchEventRésultat du traitement de la méthode,Une consommation réussie renvoietrue,Pas de consommation, retour àfalseEt le remettre au niveau supérieuronTouchEventTraitement

En termes simples,Dans l'arbre de contrôle,ChaqueviewGroupIndispatchTouchEventMéthode de distribution continue à la recherche de la consommationview,Si la couche inférieureviewIl n'y a pas d'événements de consommation, il y a des niveaux d'appels en ligneviewGroupDeonTouchEventComment gérer les événements.

En même temps,Parce queActivityHéritéWindow.CallBackInterface,Donc il y en a aussi.dispatchTouchEventEtonTouchEventMéthodes:

  1. activityAprès avoir reçu l'événement touch,Les événements tactiles seront distribués directement àviewGroup
  1. SiviewGroupDedispatchTouchEventRetour de la méthodefalse,Alors appelezActivityDeonTouchEventPour gérer les événements
  1. No1、2Le résultat de l'étape estactivityDedispatchTouchEventRésultat du traitement de la méthode,Et retourner à l'étage supérieur
  1. On dirait que vous en savez beaucoup sur la distribution des événements,Avez - vous appliqué la distribution d'événements dans la pratique?

- Oui.,Oui..Deux exemples:.

La première exigence est de concevoir un bloc de boutons,La pression diminue la hauteur et devient translucide,Ça rebondit quand on lâche.C'est l'heure du boutononTouchEventDéterminer le type d'événement dans la méthode:downPuis appuyez sur l'animation,upL'animation de libération est activée.Notez également la réception decancelPour revenir à l'état au moment de l'événement.

Le deuxième est le conflit de glissement.L'idée centrale pour résoudre les conflits de glissement est de distribuer les événements de glissement àviewGroupOu à l'intérieurview.Les principales méthodes sont l'interception externe et l'interception interne. L'idée de la méthode d'interception externe est queviewGroupPour juger de l'état du glissement,Intercepter les événements qui correspondent à leur propre glissement,Ne pas intercepter les événements non conformes,À l'intérieurview.L'idée de la loi sur l'interception interne exigeviewGroupInterception saufdownTous les événements sauf les événements,Puis à l'intérieurviewPour juger de l'état du glissement,Définir un drapeau d'interdiction d'interception pour le temps correspondant à l'auto - glissement,Pour les événements qui ne correspondent pas à leurs propres conditions de glissement, décochez le drapeau pour laisserviewGroupIntercepter.

  1. Comment choisir les méthodes d'interception externe et interne?

En général,La méthode d'interception externe n'a pas besoin de pairesviewEffectuer la réécriture de la méthode,Plus simple que l'interception interne,La méthode d'interception externe est recommandée.

Mais si vous avez besoin deviewPour juger d'autres situations tactiles,La méthode d'interception interne peut être utilisée pourviewConditions de traitement.

  1. Avant de parler jusqu'à toucher l'événement,Savez - vous comment un événement tactile se produit à partir d'un écran tactile?

Enfin

Voici le partage d'aujourd'hui sur l'interview,C'est toujours ça.,Il y a quelque chose que vous devez comprendre,Et pour pouvoir s'exprimer,Être capable de faire reconnaître votre compréhension par l'intervieweur,Par exempleHandlerMécanismes,C'est une question d'entrevue.Quelque chose d'obscur,Peut - être qu'il ne vit qu'au milieu de l'interview,Vous ne l'utiliserez pas dans votre travail,Mais tu dois savoir ce que c'est.

Enfin, je partage ici une collection d'images du système technique ci - dessus liées à des dizaines d'ensemblesTencent、Les gros titres、Ali!、Meituan et al19Questions d'entrevue pour,Les points techniques ont été regroupés en vidéos etPDF(Il a fallu plus d'énergie que prévu),ContientLe contexte de la connaissance + Beaucoup de détails,En raison de l'espace limité,Voici une partie de l'image.

Et Technologie architecturale avancée cerveau、AndroidÉlaboration d'un profil d'entrevue,Données architecturales avancées avancées Aider tout le monde à apprendre à progresser,Vous économisez également du temps en recherchant des documents en ligne pour apprendre,Peut également partager avec les amis autour d'apprendre ensemble.

 AndroidApprendrePDF+Vidéo de schéma+Documents d'entrevue+Notes sur le code source

【AndroidTechnologie avancée de basePDFDocumentation,BATAnalyse du vrai problème de l'interview de Dachang】

AndroidMécanisme de distribution des événements V:Intervieweur, asseyez - vous,Questions d'entrevue sur Android_Développement mobile

【Ensemble d'algorithmes】

AndroidMécanisme de distribution des événements V:Intervieweur, asseyez - vous,Questions d'entrevue sur Android_Développement mobile_02

【ExtensionAndroidPoints de connaissance obligatoires】

AndroidMécanisme de distribution des événements V:Intervieweur, asseyez - vous,Questions d'entrevue sur Android_Développement mobile_03

【AndroidQuelques ressources d'apprentissage vidéo sur l'architecture avancée】

**AndroidAprès avoir reçu la vidéo de l'étude, c'est encore plus!**Marche!BATJGrande usine, etc(Préparez - vous.)!Tout le monde dit qu'Internet est froid en hiver,En fait, c'est juste que tu as pris la mauvaise voiture,Et moins habillé(Compétences),Si tu montes dans la bonne voiture,Capacité technique suffisante,Le coût du remplacement de l'entreprise est élevé,Comment peut - on se faire virer,C'est l'obsolescence de l'entreprise terminaleCurdC'est juste!Aujourd'hui, le marché est inondé de programmeurs débutants,Ce tutoriel s'adresse àAndroidDevelopment Engineer1-6Le personnel de、En période de goulot d'étranglement,Ceux qui veulent dépasser leur propre augmentation de salaire dans des années,Niveau avancéAndroidMoyenne et supérieure、L'architecte est plus un poisson pour toi,Prenez - le rapidement!

版权声明
本文为[Mb61c1dbbb44788]所创,转载请带上原文链接,感谢
https://chowdera.com/2022/01/202201150218513213.html

随机推荐