您的位置:首页 > 职场人生

android面试专题(2)

2016-07-23 11:42 429 查看
android面试专题(3)

Handler的运行机制(运行原理)(Handler,Looper,MessageQueue,Message之间的关系)

(1)Handler允许处理Message和Runnable对象。

(2)MessageQueue存储着message和Runnable的队列

(3)Looper控制着handler传递Message(post, sendMessage)和出离Message(handleMessage方法)

ListView的分页实现思路?

通过onScrollListenr监视listView是否滑动底部,也就是第一个可见item+可见item的数量 == 总的item, 即加载新的数据。

Intent的功能, 传递的数据的类型

Intent 连接Acitivity, Service, BroadcastReceiver, ContentProvider的功能。

传递的数据类型: 8中基本数据类型, 以及String, Bundle ,以及实现Serializable或者Paarcelable的类型。

Intent分为显示意图,隐式意图:

显示意图: 调用Intent.setComponent()或intent.setClass()指定组件名, 指定Intent传递个那个组件。

XML解析:

 DOM, SAX, PULL;

   DOM: 将整个文档读入, 构建一个驻留内存的树结构,然后可以使用, 优点:增删改查方便, 缺点: 占据内存大,

   SAX: 基于事件驱动型,占用内存小, 解析速度快, 适合文档的读取, 不适合增删改。

   PULL: 基于事件驱动型, android官方API提供, 可随时终止。

android内存的优化

  android内存泄露容易导致内存溢出,又称为OOM。

  Android内存优化策略:

  1)在循环内尽量不要使用局部变量

  2)不用的对象即时释放,即指向NULL

  3)数据库的cursor即时关闭。

  4)构造adapter时使用缓存contentview

  5)调用registerReceiver()后在对应的生命周期方法中调用unregisterReceiver()

  6)即时关闭InputStream/OutputStream。

  7)android系统给图片分配的内存只有8M, 图片尽量使用软引用, 较大图片可通过BitmapFactory缩放后再使用,并及时recycle

  8)尽量避免static成员变量引用资源耗费过多的实例。

加载大图片的时候如何防止内存溢出

  android系统给图片分配的内存只有8M,当加载大量图片时往往会出现OOM。

    Android加载大量图片内存溢出解决方案:(使用缩微图)

    1)尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存,可以通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source

   2)使用BitmapFactory.Options对图片进行压缩

InputStream is = this.getResources().openRawResource(R.drawable.pic1);
BitmapFactory.Options options=new BitmapFactory.Options();
options.inJustDecodeBounds = false;//图片资源不加载到内存中
options.inSampleSize = 10;   //width,hight设为原来的十分一
Bitmap btp =BitmapFactory.decodeStream(is,null,options);


      3)运用Java软引用,进行图片缓存,将需要经常加载的图片放进缓存里,避免反复加载,及时销毁不再使用的Bitmap对象

if(!bmp.isRecycle() ){
bmp.recycle()   //回收图片所占的内存
system.gc()  //提醒系统及时回收
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android面试专