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;
}