美文网首页
Android相关面试题记录

Android相关面试题记录

作者: 五月笑忘 | 来源:发表于2017-05-09 09:53 被阅读12次

    此文章不定时更新,记录面试过程中遇到的相关问题

    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!

    相关文章

      网友评论

          本文标题:Android相关面试题记录

          本文链接:https://www.haomeiwen.com/subject/zduvtxtx.html