作家
登录

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

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

开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散


  1. 资本释放问题:法度榜样代码的问题,经久保持某些资本,如Context、Cursor、IO 流的引用,资本得不到释放造成内存泄漏。

Android中的四大年夜组件以及应用处景

  • Activity:在Android应用中负责与用户交互的组件。
  • Service:常用于为其他组件供给后台办事或者监控其他组件的运行状况。经常用来履行一些耗时操作。
  • BroadcastReceiver:用于监听应用法度榜样中的其他组件。
  • ContentProvider:Android应用法度榜样之间实现及时数据交换。

1、Activity的生命周期

生命周期:对象什么时刻生,什么时刻逝世,怎么写代码,代码往那边写。

留意:

  1. 当打开新的Activity,采取透明主题的时刻,当前Activity不会回调onStop
  2. onCreate和onDestroy配对,onStart和onStop配对(是否可见),onResume和onPause配对(是否在前台,可以与用户交互)
  3. 打开新的Activity的时刻,相干的Log为: 
  1. Main1Activity: onPause 
  2.  
  3. Main2Activity: onCreate 
  4.  
  5. Main2Activity: onStart 
  6.  
  7. Main2Activity: onResume 
  8.  
  9. MainA1ctivity: onStop 

异常状况下的生命周期:

资本相干的体系设备产生改变或者资本不足:例如屏幕扭转,当前Activity会烧毁,并且在onStop之前回调onSaveInstanceState保存数据,在从新创建Activity的时刻在onStart之后回调onRestoreInstanceState。个中Bundle数据会传到onCreate(不必定稀有据)和onRestoreInstanceState(必定稀有据)。

  1. android:configChanges="orientation" 

对应的生命周期如下: 

正常启动

  1. Activity: onCreate 
  2.  
  3. Fragment: onAttach 
  4.  
  5. Fragment: onCreate 
  6.  
  7. Fragment: onCreateView 
  8.  
  9. Fragment: onActivityCreated 
  10.  
  11. Activity: onStart 
  12.  
  13. Activity: onResume 

正常退出

  1. Activity: onPause 
  2.  
  3. Activity: onStop 
  4.  
  5. Fragment: onDestroyView 
  6.  
  7. Fragment: onDestroy 
  8.  
  9. Fragment: onDetach 
  10.  
  11. Activity: onDestroy 

3、Activity的启动模式

  1. standard:每次激活Activity时(startActivity),都创建Activity实例,并放入义务栈;
  2. singleTop:如不雅某个Activity本身激活本身,即义务栈栈顶就是该Activity,则不须要创建,其余情况都要创建Activity实例;
  3. singleTask:如不雅要激活的那个Activity在义务栈中存在该实例,则不须要创建,只须要把此Activity放入栈顶,即把该Activity以上的Activity实例都pop,并调用其onNewIntent;
  4. singleInstance:应用1的义务栈中创建了MainActivity实例,如不雅应用2也要激活MainActivity,则不须要创建,两应用共享该Activity实例。

4、Activity与Fragment之间的传值

  1. 经由过程findFragmentByTag或者getActivity获得对方的引用(强转)之后,再互相调用对方的public办法,然则如许做一是惹人了“强转”的丑恶代码,别的两个类之间各矜持有对方的强引用,耦合较大年夜,轻易造成内存泄漏。
  2. 经由过程Bundle的办法进行传值,例如以下代码:
  1. //Activity中对fragment设置一些参数 
  2.  
  3. fragment.setArguments(bundle); 
  4.  
  5. //fragment中经由过程getArguments获得Activity中的办法 
  6.  
  7. Bundle arguments = getArguments();  
     1/9    1 2 3 4 5 6 下一页 尾页

      推荐阅读

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

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


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

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

关键词: 探索发现

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

网友点评
自媒体专栏

评论

热度

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