Android面试问题总结

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:应用层  安全层  网络层  数据链路层

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值