笔者因为在近期须要找工做,因此近期最主要的任务就是准备面试,不打无准备之仗。只有你准备充分了,那么你想获得的机会才可能有机会入你怀中。面试
笔者会将准备面试的学习过程记录下来,方便本身复盘的同时也但愿能给一道找工做的小伙伴们一些帮助。笔者准备的内容大纲以下bash
接下来开始本篇博客的正菜:post
ALPHA_8 每一个像素占用1byte内存
ARGB_4444 每一个像素占用2byte内存
ARGB_8888 每一个像素占用4byte内存(默认)
RGB_565 每一个像素占用2byte内存性能
在Android中,Bitmap的存储分为两部分,一部分是Bitmap的数据,一部分是Bitmap的引用。 在Android2.3时代,Bitmap的引用是放在堆中的,而Bitmap的数据部分是放在栈中的,须要用户调用recycle方法手动进行内存回收,而在Android2.3以后,整个Bitmap,包括数据和引用,都放在了堆中,这样,整个Bitmap的回收就所有交给GC了,这个recycle方法就不再须要使用了。学习
启动服务两种方式this
1.startServicespa
onCreate() --> onStartCommand() --> onDestroy()
2.bindService
onCreate() --> onBind() --> onUnbind() --> onDestroy()
bind的方式开启服务后,若是开启者被销毁了,它也会跟着一块儿销毁。绑定者能够调用服务里的方法。
3.通讯方式
服务和Activity、服务和服务之间能够经过Binder对象、Broadcast(广播)进行通讯。
在使用Handler的时候,每每是须要在子线程中作耗时任务的,可是当任务未执行完就把该Handler所在的Activity销毁的话,它是没法被GC的。由于持有非静态内部类的引用是没法被内存回收,因此会出现内存泄露。
解决方法主要在于两点:
经过继承Handler就能够实现一个Handler静态内部类,还能够在构造方法中添加对外部Activity的弱引用。
public class MainActivity extends Activity {
......
private final MyHandler mHandler = new MyHandler(this);
private static class MyHandler extends Handler {
private final WeakReference<MainActivity> mActivity;
public MyHandler(MainActivity activity) {
this.mActivity = new WeakReference<MainActivity>(activity);
}
@Override
public void handleMessage(Message msg) {
}
}
}
复制代码
序列化,表示将一个对象转换成可存储或可传输的状态。
须要序列化的缘由有三种状况: