此文章不定时更新,记录面试过程中遇到的相关问题
1.activity的启动模式有几种?分别是什么?
4种
standard:默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。
singleTop:如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
singleTask:只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。如果是在别的应用程序中启动它,则会新建一个task,并在该task中启动这个Activity,singleTask允许别的Activity与其在一个task中共存,也就是说,如果我在这个singleTask的实例中再打开新的Activity,这个新的Activity还是会在singleTask的实例的task中。
singleInstance:只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
2.请用代码写出一个接口回调的例子
public class A implements View.OnClickListener{
private OnRecyclerViewItemClickListener mOnItemClickListener = null;
public interface OnRecyclerViewItemClickListener {
void onItemClick(View view, int data);
}
@Override
public void onClick(View v) {
if (mOnItemClickListener != null) {
//注意这里使用getTag方法获取数据
mOnItemClickListener.onItemClick(v, (Integer) v.getTag());
}
}
public void setOnItemClickListener(OnRecyclerViewItemClickListener listener) {
this.mOnItemClickListener = listener;
}
}
然后在B类中实现具体操作
public class B{
A a = new A();
a.setOnItemClickListener(){
//各种噼里啪啦的操作
}
}
3.ScrollView嵌套RecyclerView会有什么问题?怎么解决?
ScrollView中嵌套了几个RecyclerView,会导致滑动RecyclerView没有惯性效果
解决办法:重写LayoutManager,设置canScrollVertically属性为false
eg:
layoutManager = new GridLayoutManager(this, 2, LinearLayoutManager.VERTICAL, false){
@Override
public boolean canScrollVertically() {
return false;
}
};
4.Android5.0,6.0,7.0的特性
Android 5.0:
Material Design;
Dalvik改为ART,提高启动效率
Android 6.0:
TextInputLayout新控件;
运行权限管理;
增加大量动画;
支持raw格式照片
用httpURLConnection来替代httpclient
Android 7.0:
分屏多任务
通知栏快速回复
5.内存泄漏跟内存溢出的区别
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。
memory leak会最终会导致out of memory!
网友评论