android面试(5) 事件处理

本文探讨了Android面试中的两个关键知识点:事件处理和AsyncTask异步任务。AsyncTask是一个对Thread的封装,包含Params、Progress、Result三个泛型参数,用于在后台执行耗时任务。在任务执行过程中,提供了onPreExecute、doInBackgroung、onProgressUpdate和onPostExecute四个回调函数,分别在任务开始、执行、更新进度和完成时调用。在事件分发方面,重点介绍了View的dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent方法,解释了如何进行事件分发和拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

55.AsyncTask异步任务的理解?

AsyncTask是一个抽象类,这个类是对Thread类的一个封装,该类(asyncTask<Params,Progress,Result>)定义了3种泛型参数。不使用时Void型

Params:启动任务执行的输入参数,例如HTTP的URL,任务执行器需要的数据类型

Progress:后台任务执行的百分比

Result:后台执行任务最终返回的结果,如String,Integer等。

内部回调函数有onPreExecute(),doInBackgroung(),onProgressUpdate(),onPostExecute().

onPreExecute():准备运行,该回调函在任务被执行后立即由UI线程调用,通常是用来在用户UI上显示进度条等相关的操作

doInBackgroung():在后台运行,在这里执行耗时的后台计算,计算的结果必须由该函数返回,并传递到onPostExecute()中处理。在该函数中可以使用publishProgress()发布进度值,这些进度值会在onProgressUpdate()中被接受并发布到UI线程

onProgressUpdate():进度更新,该函数由UI线程在publishProgress()方法调用后被调用,一般用于动态更新一个进度条。

onPostExecute():完成后台任务,后台计算结束后被调用,后台计算的结果作为参数传递给这一方法

56.Android如何进行事件分发

内部拦截和外部拦截。View的分发机制。dispatchTouchEvent(),onInterceptTouchEvent(),onTouchEvent()这三个方法

dispatchTouchEvent()方法是用于处理事件分发,若事件能够传递到当前View,则一定会调用该方法,View中dispatchTouchEvent()源码?

Public Boolean dispatchTouchEvent(Motion e){

Boolean result=false;

If(onInterceptTouchEvent(e)){//如果当前View截获事件,那么事件就会由当前View处理,即调用onTouchEvent(e)

 Result=onTouchEvent(e);}

Else{//如果不截获,则交给其子View来分发

Result=child.dispatchTouchEvent(e);

}

Return  result;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值