当前位置:网站首页>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.
- 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.
- 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..
- 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.
- 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.
- 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.
- - 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.
- 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
- view
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:
- activityAprès avoir reçu l'événement touch,Les événements tactiles seront distribués directement àviewGroup
- SiviewGroupDedispatchTouchEventRetour de la méthodefalse,Alors appelezActivityDeonTouchEventPour gérer les événements
- No1、2Le résultat de l'étape estactivityDedispatchTouchEventRésultat du traitement de la méthode,Et retourner à l'étage supérieur
- 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.
- 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.
- 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】
【Ensemble d'algorithmes】
【ExtensionAndroidPoints de connaissance obligatoires】
【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
边栏推荐
- The world is always hostile to good people.
- Re regular matching findall (. +?) Match any content that conforms to a certain format (regular matching catch bullet screen)
- Android中的羊角符,面試看這個就够了
- 數據分析八大模型:OGSM模型
- La corne d'agneau d'Android, c'est assez pour l'interview
- Huit modèles d'analyse des données: modèle ogsm
- Exemple d'application de linq
- Utilisez S7. Net communication library
- Écrire La Bibliothèque de communication Modbus TCP
- Lire le profil INI
猜你喜欢
-
Utilisez S7. Net read Siemens 1500plc
-
Halcon joint C # Programming Experiment
-
Utiliser nmodbus4 pour lire les données à la fois RTU et TCP
-
Tiktok Data Analysis options Platform - tichoo Data
-
MySQL review: create tables, MySQL data types, primary key constraints, primary key
-
Linear Algebra: matrix review
-
Review of Linear Algebra: determinant
-
The digital RMB cross-border payment test has been continuously promoted, and mainland residents can also shop in Hong Kong in the future
-
Thesis classification and writing basis
-
YC Framework version update: v1.0 zero point two
随机推荐
- Analyse des données tichoo
- Tiktok data analysis platform
- Partage de l'industrie | tichoo Data to attend 2022 Overseas Short video Industry Summit
- [ticoo Information Station] tiktok and Cross - Border E - commerce Weekly Report
- Options d'analyse des données ticoo {infostation}
- Partage de l'industrie | Lu Shidong, PDG de tichoo Data Outlook Global Video e - commerce future Blueprint
- [ticoo Information Station]
- Noël Black Five
- YC Framework version update: v1.0 zero point two
- Lucene分词器
- Gbase 8A slow SQL optimization case
- 微服务系列--聊聊微服务治理中的一些感悟
- 线程池的经典应用场景
- [web security from getting started to giving up] 07_ Insecure file download and upload vulnerability
- 如何落地一款重试组件
- 一起聊聊设计原则
- 大话Redis系列--深入探讨多路复用(上)
- 大话Redis系列--实战案例总结(下)
- 大话Redis系列--实战案例总结(上)
- JVM系列 -- G1与低延迟垃圾收集器
- JVM系列 -- 深入剖析垃圾收集器
- JVM系列--内存回收
- JVM系列--对象内存分配技术分析
- JVM系列--虚拟机的内存管理
- 系统性能瓶颈排查技术总结
- 使用redis的scan指令详解
- 实战--分布式id发号器
- 分布式事务之超详细的Seata实践记录
- TCP time_wait
- IP数据报头部
- 最大基环内向树
- MySQL实战45讲 学习笔记(七)
- MySQL实战45讲 学习笔记(六)
- Android从零开始搭建MVVM架构(1)(1),kotlin匿名函数
- Android事件分发机制五:面试官你坐啊,安卓上机面试题
- There will be two different stages between the breakthrough of science and technology and its real transformation into an inclusive technology
- [leetcode] force deduction 200 Number of islands
- HashShuffleManager
- Altium Designer
- Android construit l'architecture mvvm à partir de zéro (1) (1), fonction anonyme kotlin