1、自定义控件中如果绘制大量的斑点怎么处理?
使用postInvalidate异步通知更新,或者使用invalidate(l,t,r,b)刷新局部。如果还是不可以使用surfaceview来实现。
2、进程的状态
前台进程:目前正在屏幕上显示的进程和一些系统进程,
可见进程:是一些不在前台,但用户依然可见的进程,
服务进程:一个包含已启动服务的进程就是服务进程,
后台进程:就是我们通常意义上理解的启动后被切换到后台的进程,
空进程:空进程是不包含任何活跃组件的进程。
3、AsyncTAsk
onPreExecute
doInBackground(Params... params)
onProgressUpdate(Progress... values) <=publishProgress
onPostExecute(Result result) / onCancelled()
AsyncTask必须在主线程中加载(4.1及以上系统已经自动完成);AsyncTask必须在主线程中创建对象,execute必须在主线程中调用;不能直接调用;一个Asynctask只能执行一次。1.6之前使用串行执行任务,1.6的时候使用线程池,3.0为减少并行的错误默认又成了串行(串行线程池),但可以通过executeonExecutor并行线程池并行。
4、线程池
优点:重用线程,减少创建和销毁的开销;控制最大并发数量,减少大量线程导致的阻塞;对线程进行简单的管理,如定时执行,循环执行 等。
执行流程:如果线程池中的核心线程没有达到核心线程数,直接创建一个核心线程来执行任务;如果核心线程没有空闲则会放入任务队列中,如果任务队列也满了,则会创建非核心线程,线程池超过最大线程数量后会执行拒绝策略。
四种常见的线程池:fixed,cached,scheduled,single。通过Executors获取。
5、关于Activity的启动过程途径的类
Activity->Instrumentation->AMS->ActivityStackSupervisor->ActivityStack->ActivityStackSupervisor->ApplicationThread->Handler->ActivityThread(在此处完成创建),
具体创建过程ActivityClicentRecord找到组件->Instrumenttation完成对象的创建->Application相关->ContextImpl到Activity的attach完成一些初始化(建立Activity和contextImpl的关联,创建window建立关联)->调用Activity的onCreate方法。
6、关于网络请求分层
http:应用层 传输层 网络层 数据链路层 https:应用层 安全层 网络层 数据链路层