android分發(fā)事件 安卓的事件分發(fā)

【Android】ANR是如何產(chǎn)生的?

而ANR事件就是在 InputDispatcher 中產(chǎn)生的。InputDispatcher 內(nèi)部維護(hù)了一個(gè)線程 InputDispatcherThread ,輸入事件在這個(gè)線程中進(jìn)行處理。這個(gè)線程在 InputManager 中進(jìn)行創(chuàng)建和啟動(dòng)。

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),五蓮網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:五蓮等地區(qū)。五蓮做網(wǎng)站價(jià)格咨詢:18982081108

引發(fā)ANR的原因:在Android里,應(yīng)用程序的響應(yīng)性是由Activity Manager和WindowManager系統(tǒng)服務(wù)監(jiān)視的 。

當(dāng)應(yīng)用發(fā)生 ANR 之后,系統(tǒng)會(huì)收集許多進(jìn)程,來(lái) dump 堆棧,從而生成 ANR Trace 文件。收集的第一個(gè),也是一定會(huì)被收集到的進(jìn)程,就是發(fā)生 ANR 的進(jìn)程。

Android應(yīng)用中的ANR(ApplicationNotResponding)指的是當(dāng)應(yīng)用程序無(wú)法響應(yīng)用戶輸入或事件,導(dǎo)致程序停頓、出現(xiàn)卡頓甚至崩潰的情況。ANR問(wèn)題可能影響用戶的使用體驗(yàn)和造成不必要的損失。

Android應(yīng)用程序通常運(yùn)行在一個(gè)main線程。如果主線程里占用了太長(zhǎng)的時(shí)間的話,程序沒(méi)有機(jī)會(huì)處理輸入或者Intent廣播就會(huì)引發(fā)ANR無(wú)響應(yīng)。因此,主線程里的任何方法都盡可能少做事情。

ANR是Application Not Responding的簡(jiǎn)稱,主要是說(shuō)應(yīng)用程序出現(xiàn)無(wú)響應(yīng)的情況。

Android事件分發(fā)機(jī)制

1、Android中對(duì)視圖的Touch事件進(jìn)行分發(fā)處理。

2、android的view管理是以window為單位的,每個(gè)window對(duì)應(yīng)一個(gè)view樹(shù)。Window機(jī)制不僅管理著view的顯示,也負(fù)責(zé)view的事件分發(fā)。

3、DecorView.java Activity.java ViewGroup.java View.java 通過(guò)該方法,接收器receiver的onKeyDown、onKeyUp、onKeyLongPress、onKeyMultiple等方法將被回調(diào)。

Android-View的事件分發(fā)及攔截-父控件和子控件都處理觸摸事件的方式

1、(1) 事件從Activity.dispatchTouchEvent()開(kāi)始傳遞,只要沒(méi)有被停止或攔截,從最上層的View(ViewGroup)開(kāi)始一直往下(子View)傳遞。子View可以通過(guò)onTouchEvent()對(duì)事件進(jìn)行處理。

2、Android 事件傳遞機(jī)制是 先分發(fā)再處理 ,先由外部的 View 接收,然后依次傳遞給其內(nèi)層的 View,再?gòu)淖顑?nèi)層 View 反向依次向外層傳遞。

3、事件的起源:我們都知道觸摸事件是從Activity的dispatchTouchEvent方法開(kāi)始的。再調(diào)用父類的super.dispatchTouchEvent(ev),事件向派發(fā)。

4、當(dāng)為true的時(shí)候則說(shuō)明父控件(也就是viewPager)不攔截事件,點(diǎn)擊事件由子控件(也就是webView)來(lái)處理,反之為false的時(shí)候,父控件則攔截點(diǎn)擊事件,子控件無(wú)法響應(yīng)點(diǎn)擊事件。

5、View類實(shí)現(xiàn)了KeyEvent.Callback接口中的一系列回調(diào)函數(shù),因此,基于回調(diào)的事件處理機(jī)制通過(guò)自定義View來(lái)實(shí)現(xiàn),自定義View時(shí)重寫這些事件處理方法即可。Handler是一個(gè)消息分發(fā)對(duì)象。

標(biāo)題名稱:android分發(fā)事件 安卓的事件分發(fā)
當(dāng)前路徑:http://muchs.cn/article4/dgeccie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、虛擬主機(jī)域名注冊(cè)、網(wǎng)站維護(hù)、電子商務(wù)小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)