Android高频面试题

细谈Activity四种启动模式

https://blog.csdn.net/zy_jibai/article/details/80587083

TCP和UDP的区别和优缺点

https://blog.csdn.net/qq_34624951/article/details/82669444

Android 中内存泄漏的原因分析及解决方案

https://blog.csdn.net/tangxueqin/article/details/80116648

Android 关于内存泄露,你必须了解的东西

https://www.jianshu.com/p/65f914e6a2f8

1. handler机制的原理

andriod提供了 Handler 和 Looper 来满足线程间的通信。Handler 先进先出原则。
Looper类用来管理特定线程内对象之间的消息交换(Message Exchange)。
1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。
2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到Message Queue里;
  或者接收Looper从Message Queue取出)所送来的消息。
3) Message Queue(消息队列):用来存放线程放入的消息。
4)线程:UI thread 通常就是main thread,而Android启动程序时会替它建立一个Message Queue。

2.Listview你是怎么优化的。

1.减少创建view的对象,充分使用convertview,可以使用一静态类来优化处理getview的过程

3.GC内存泄露原因及解决方案

可能出现内存泄漏的情况: 
1.数据库的cursor没有关闭 
2.构造adapter时,没有使用缓存contentview 
   衍生listview的优化问题-----减少创建view的对象,充分使用contentview,
   可以使用一静态类来优化处理getview的过程
3.Bitmap对象不使用时采用recycle()释放内存 
4.activity中的对象的生命周期大于activity 
调试方法: DDMS==> HEAPSZIE==>dataobject==>[Total Size] 

4. 什么是ANR以及如何避免它?

ANR:Application Not Responding,五秒
在Android中,活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应。
当出现下列情况时,Android就会显示ANR对话框了:
1. 对输入事件(如按键、触摸屏事件)的响应超过5秒
2. 意向接受器(intentReceiver)超过10秒钟仍未执行完毕

Android应用程序完全运行在一个独立的线程中(例如main)。
这就意味着,任何在主线程中运行的,需要消耗大量时间的操作都会引发ANR。
因为此时,你的应用程序已经没有机会去响应输入事件和意向广播(Intent broadcast)。

因此,任何运行在主线程中的方法,都要尽可能的只做少量的工作。
特别是活动生命周期中的重要方法如onCreate()和 onResume()等更应如此。
潜在的比较耗时的操作,如访问网络和数据库;或者是开销很大的计算,比如改变位图的大小,
需要在一个单独的子线程中完成(或者是使用异步请求,如数据库操作)。
但这并不意味着你的主线程需要进入阻塞状态已等待子线程结束 -- 也不需要调用Therad.wait()或者Thread.sleep()方法。
取而代之的是,主线程为子线程提供一个句柄(Handler),让子线程在即将结束的时候调用它
(xing:可以参看Snake的例子,这种方法与以前我们所接触的有所不同)。
使用这种方法涉及你的应用程序,能够保证你的程序对输入保持良好的响应,
从而避免因为输入事件超过5秒钟不被处理而产生的ANR。
这种实践需要应用到所有显示用户界面的线程,因为他们都面临着同样的超时问题。

5.在就是你项目经验,突出你遇到什么难点,然后是怎么解决的?(尽量将每个技术点凸显出来,当然面试官有时候会为了体现你是否真正做过,他会问你,你在这个应用中做那个模块,用了多少个类之类的问题。)

这个要想一下,经常被问到
1.版本适配问题,比如SayToken在4.4手机上闪退,后来发现是Ripple背景的原因,因为只有5.0手机上才有这个问题,但是难点是4.4手机不报具体错误,
我只能通过debug一步一步去调试,最后锁定一段代码,发现是引用了ripple背景引发的bug
2.
3.
4.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,800评论 25 709
  • 所有知识点已整理成app app下载地址 J2EE 部分: 1.Switch能否用string做参数? 在 Jav...
    侯蛋蛋_阅读 7,427评论 1 4
  • Java中的String类可以被继承么? 答:不能,因为它是一个final类,同样的还有Integer,Float...
    gyymz1993阅读 9,530评论 2 104
  • 有机茶 我采撷时虫未生, 歹人污我农药重。 质本洁来香且浓, 高山顶上观云生。 题司空山 世间云雾南岳南 问道司空...
    诗人李布阅读 1,886评论 0 0
  • 1、收听导读3遍 2、关键字句 (1)定而生慧。在此,我想延伸一下——慢生静,静生定,定生慧!现在我们大多数人的生...
    邹多阅读 2,642评论 0 0

友情链接更多精彩内容