安卓面试基础知识总结(7)

2019-04-01 16:14

26 handler不加static为什么会有内存泄露.

同一个线程下的handler共享一个looper对象,消息中保留了对handler的引用,只要有消息在队列中,那么handler便无法被回收,如果handler不是static,那么使用Handler的Service和Activity就也无法被回收,即便它们的ondestroy方法被调用。这就可能导致内存泄露。当然这通常不会发生,除非你发送了一个延时很长的消息。

但把hanlder添加为static后,会发现在handler中调用外部类的方法和成员变量需要它们都定义为final,这显然是不大可能的。这里建议在你的Service或Activity中的增加一个内部static Handler类,

这个内部类持有Service或Activity的弱引用,这样就可以解决final的问题。

27 handler中遇到不加static会出现警告,而我们还要引用成员变量,该怎样解决

外部类的方法和成员变量需要它们都定义为final,

28 application的framework,library分别有什么

framework是程序的结构.类库是构建程序的部件.

29 为什么不能在broadcastreceiver中开启子线程

BroadcastReceiver的生命周期很短,子线程可能还没有结束BroadcastReceiver就先结束了。

BroadcastReceiver一旦结束,此时BroadcastReceiver的所在进程很容易在系统需要内存时被优先杀死,

因为它属于空进程(没有任何活动组件的进程)。如果它的宿主进程被杀死,那么正在工作的子线程也会被杀死。

所以采用子线程来解决是不可靠的。

30 jvm与dalvik的区别

编译后文件格式 基于架构 Jvm .java->.class->.jar 基于栈的架构 Dalvik .java->.class->.dex->.odex 基于寄存器的架构

1. 架构不同:JVM使用栈架构;Dalvik使用的是寄存器,数据是加载到CUP的

寄存器上的。

2. JVM加载的.class文件,Dalvik加载的是.dex文件,对内存的分配情况做

了优化。

31 jvm是怎样工作的

32 当前的activity是singletop的,而且在栈的最顶端,如果我们从service中执行startAcitvity来开启这个activity,会执行哪些方法

onResume()-onRestart()

如果我要让手机每三天做一件事,你会怎么设计,有哪些需要注意的

画一下你的app的模型图

如果调用Service的onStart方法,再调用onBind方法,最后调用onStop方法,会怎样

11. Serializable和Parceable有什么区别,分别在什么情况下使用 12. 为什么HttpConnection会涉及到基站问题而HttpClient不会 13. ImageLoader内部是怎样实现的

14. 怎样在子线程中实现handler,并用handler接收消息 15. intent传递数据时为什么要继承parceable或serializeble接口,而且没有实现任何方法

16. 有一个很难复现的bug,而且很急,你会用什么方法找到这个bug 17. 有一个图片墙,我会向下滑动--停,向下滑动--停??,要怎样避免OOM

33 跨进程通信

33.1 原理

Android中的跨进程通信采用的是Binder机制,其底层原理是共享内存。

33.2 为什么不能直接跨进程通信?

为了安全考虑,应用之间的内存是无法互相访问的,各自的数据都存在于自身的内存区域内。

33.3 如何跨进程通信?

要想跨进程通信,就要找到一个大家都能访问的地方,例如硬盘上的文件,多个进程都可以读写该文件,通过对该文件进行读写约定好的数据,来达到通信的目的。

? Binder在linux层面属于一个驱动,但是这个驱动不是去驱动一个硬件,而且驱动一小段内存。

? 不同的应用通过对一块内存区域进行数据的读、写操作来达到通信的目的。 ? 不同的应用在同一内存区域读写数据,为了告知其他应用如何理解写入的数据,就需要一个说明文件,这就是AIDL。当两个应用持有相同的AIDL文件,就能互相理解对方的的意图,就能做出相应的回应,达到通信的目的。


安卓面试基础知识总结(7).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2015-2020年中国建筑节能市场研究及投资前景预测报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: