一、内存泄漏和内存溢出的区别:
内存溢出(out of memory)指申请的内存超过了系统可以分配的内存
内存泄漏(memory leak)指程序在申请内存后无法释放已经申请的内存空间,内存泄漏最终会导致内存溢出
二、Android点击图标启动Activity和从另一个Activity跳转到这个Activity有什么区别?
点击图标启动的是主界面,而且Intent intent = mActivity.getPackageManager().getLaunchIntentForPackage(packageName);
mActivity.startActivity(intent);
从另一个Activity跳转到这个Activity,跳转的页面可以是任意的,而且启动的样式有多种
三、SurfaceView和View的区别
SurfaceView和View最本质的区别在于,surfaceView是在一个新起的单独线程中可以重新绘制画面而View必须在UI的主线程中更新画面。
那么在UI的主线程中更新画面 可能会引发问题,比如你更新画面的时间过长,那么你的主UI线程会被你正在画的函数阻塞。那么将无法响应按键,触屏等消息。
四、能否在子线程中new Handler()
那么这个Looper.prepare()方法是什么时候在哪里调用的呢?
当我们在主线程中创建Handler对象的时候没有问题,是因为主线程会自动调用Looper.prepare()方法去
给当前主线程创建并设置一个Looper对象,随意在Handler构造函数中从当前线程的对象身上拿到这个Looper。
但是子线程中并不会自动调用这个方法,所以要想在子线程中创建Handler对象就必须在创建之前手动调用Looper.prepare()方
法,否则就会报错。
五、进程和线程的区别
线程是进程的一个实体、是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
六、性能优化从哪几个方面考虑
性能优化可以从1、响应时间 2、TPS(Transaction Per Second,每秒处理的事务,系统吞吐量指标)
3、性能调优方式
明白了何为性能问题之后,就能明白性能优化实际就是优化系统的响应时间,提高TPS。优化响应时间,提高TPS。方式不外乎这三大类:
(1) 降低执行时间
又包括几小类
a. 利用多线程并发或分布式提高 TPS
b. 缓存(包括对象缓存、IO 缓存、网络缓存等)
c. 数据结构和算法优化
d. 性能更优的底层接口调用,如 JNI 实现
e. 逻辑优化
f. 需求优化
(2) 同步改异步,利用多线程提高TPS
(3) 提前或延迟操作,错峰提高TPS