作家
登录

Android面试17个知识点总结宝典

作者: 来源: 2017-12-11 09:06:58 阅读 我要评论

  •  
  •  //stub.setVisibility(View.VISIBLE); 
  •  
  •  //之后,如不雅要应用ViewStub标签琅绫擎的View,只须要按照平常来即可。 
  •  
  •  TextView tv_1 = (TextView) findViewById(R.id.tv_1); 
  •  4. 尽量多应用RelativeLayout,因为如许可以大年夜大年夜削减视图的层级。

    内存优化

    与构造地位相干的是onLayout办法的复写,一般我们自定义View的时刻,只须要完成测量,绘制即可。如不蚜?鲈定义ViewGroup的话,须要做的就是在onLayout中测量自身以及控制子控件的构造地位,onLayout是自定义ViewGroup必须实现的办法。

      3. static 关键字的应用问题:static 是Java 中的一个关键字,当用它来润饰成员变量时,那么该变量就属于该类,而不是该类的实例。所以用static 润饰的变量,它的生命周期是很长的,如不雅用它来引用一些资本消费过多的实例(Context 的情况最多),这时就要谨慎对待了。

    APP设计以及代码编写阶段都应当推敲内存优化:

      1. 珍爱Service,尽量使得Service在应用的时刻才处于运行状况。尽量应用IntentService

          IntentService在内部其实是经由过程线程以及Handler实现的,当有新的Intent到来的时刻,会创建线程并且处理这个Intent,处理完毕今后就主动烧毁自身。是以应用IntentService可以或许节俭体系资本。

      2. 内存重要的时坷矸⑴资本(例如UI隐蔽的时坷矸⑴资本等)。复写Activity的回调办法。

      2. 应用merge标签,去除同类的视图

    1. @Override 
    2.  
    3.  public void onLowMemory() { 
    4.  
    5.      super.onLowMemory(); 
    6.  
    7.  }  
    8.  
    9.  @Override 
    10.  
    11.  public void onTrimMemory(int level) { 
    12.  
    13.      super.onTrimMemory(level);  
    14.  
    15.  
    16.      switch (level) { 
    17.  
    18.          case TRIM_MEMORY_COMPLETE: 
    19.  
    20.              //... 
    21.  
    22.              break; 
    23.  
    24.          case 其他: 
    25.  
    26.      } 
    27.  
    28.  } 

      3. 经由过程Manifest中对Application设备更大年夜的内存,然则一般不推荐

    1. android:largeHeap="true" 

      4. 避免Bitmap的浪费,应当尽量去适配屏幕设备。尽量应用成熟的图片加载框架,Picasso,Fresco,Glide等。

      5. 应用优化的容器,SparseArray等

      6. 其他建议:尽量罕用列举变量,尽量罕用抽象,尽量少增长类,避免应用依附注入框架,谨慎应用library,应用代码混淆,时当场合推敲应用多过程等。

      7. 避免内存泄漏(本来竽暌功该被收受接收的对象没有被收受接收)。一旦APP的内存短时光内快速增长或者GC异常频繁的时刻,就应当推敲是否是内存泄漏导致的。

     1. 应用Android Studio供给的Android Monitors中Memory对象查看内存的应用以及没应用的情况。

     2. 应用DDMS供给的Heap对象查看内存应用情况,也可以手动触发GC。

     3. 应用机能分析的依附库,例如Square的LeakCanary,这个库会在内存泄漏的前后经由过程Notification通知你。

    什么情况会导致内存泄漏

      2. 对象内存过大年夜问题:保存了多个耗用内存过大年夜的对象(如Bitmap、XML 文件),造成内存超出限制。

     解决筹划

     1. 应当尽量避免static 成员变量引用资本消费过多的实例,比如Context。

     2. Context 尽量应用ApplicationContext,因为Application 的Context 的生命周期比较长,引用它不会出现内存泄漏的问题。

      4. 线程导致内存溢出:线程产生内存泄漏的重要原因在于线程生命周期的弗成控。例如Activity中的Thread在run了,然则Activity因为某种原因从新创建了,然则Thread仍然会运行,因为run办法不停止的话Thread是不会烧毁的。

     3. 应用WeakReference 代替强引用。比如可以应用WeakReference<Context> mContextRef

     解决筹划


      推荐阅读

      Github年度报告盘点:TensorFlow无疑是最大赢家!

    开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 以前十年,Github所有开辟者共享2500万公共仓库的代码,用户遍布200多个国度,应用人数达到了2400万,有6700万Repo,新增了10亿提>>>详细阅读


    本文标题:Android面试17个知识点总结宝典

    地址:http://www.17bianji.com/lsqh/39609.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)