Android
开发职位或许没有之前如此火爆,但是只要你有真才实学,找个较好的工作还是比较容易的。如果你是985,211,如果你是硕士学历,那找个满意的offer更是不再话下;即使不是上面的条件,只要你好好努力的学习,把每一项的技术点攻破了,同样可以达到甚至超越上面条件的同学。
Activity的加载模式。
standard,singleTop,singleTask,singleInstance。
activity的启动模式:
standard:当startActivity(),每次都会创建一个activity的实例放入任务stack中。
singleTop:当这个activity处于任务stack的最顶端,就会直接复用。不会去创建activity实例。 onNewIntent()方法被调用。
singleTask:这个activity的实例在一个任务stack中只会存在一个这样的实例。如果他发现任务栈里面有了要启动的这个actiivty,他会清空任务栈上面所有的activity,然后直接复用这个已经存在的activity
singleInstance:整个应用程序只会出现一个activity的实例。而且他是在一个单独的任务stack中。比如通话界面就是这样的模式。使用的频率很高就可以采用这样的方式。而且这个这个activity的创建的时候需要花比较长得时间。
可以参考:https://developer.android.com/guide/components/tasks-and-back-stack.html
什么时候会用到singleTask?
在MainActivity的时候用到
3 Handler机制?
MessageQueue,Looper等。
3.1 一个线程是否只有一个Looper?
3.2 如何保证一个线程只有一个Looper?
参考:ThreadLocal
事件处理
分发,拦截,处理。只是View没有拦截处理
GC算法
标记清除,标记整理,复制,分代收集
参考:http://www.jianshu.com/p/7c708a66ff42
把上面文章弄懂了,就能刷过GC
四大引用
强,软,弱,虚,并说明下合适GC
Activity的onSaveInstanceState()和 onRestoreInstanceState()方法
Activity的 onSaveInstanceState() 和 onRestoreInstanceState()并不是生命周期方法,它们不同于 onCreate()、onPause()等生命周期方法,它们并不一定会被触发。当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState() 会被调用。但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。
另外,当屏幕的方向发生了改变, Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。可以重写Activity的 onSaveInstanceState() 和 onRestoreInstanceState()方法,如下:
public class PreferencesActivity extends Activity {
private String name;
protected void onRestoreInstanceState(Bundle savedInstanceState) {
name = savedInstanceState.getString("name"); //被重新创建后恢复缓存的数据
super.onRestoreInstanceState(savedInstanceState);
}
protected void onSaveInstanceState(Bundle outState) {
outState.putString("name", "liming");//被摧毁前缓存一些数据
super.onSaveInstanceState(outState);
}
}
总结:
在接下来的学习和工作中,需要学习继续探索以下问题。
1 Java基础知识。线程,java虚拟机,内存模型等。
2 Android基础知识。官方API,常用控件源码,自定义控件,动画,性能分析等。
3 app层面:第三方开源框架(okHttp,Retrofit,ButterKnife),热修复技术(Andfix,Robust,Tinker等),崩溃处理,日志处理,内存溢出内存泄漏定位等。
4 网络基础:TCP/IP,Http/Https,UDP,七层网络协议等等。
5 沟通能力和相处能力,这是软实力。非常关键,如果你技术很好,但是相处起来很困难,我想面试官也不太愿意招你。