每次不懂的很多都是在博客里找的,是时候做点贡献了,现在找工作才知道现在学这行的好多,这篇就献给刚刚接触android的小伙伴们!


 

  Android基本架构: 

 

                                 应用程序层            Applications 

 

                                 应用程序框架层     Application Framework 

 

                                 系统运行库层        Libraries 

 

                                 linnux核心层         Linux Kernel 

 
 
 
 

  Framework 第三方包的创建! 

 

  我们是目前是在应用程序层。 

 
 
 
 
 
 
 

  Android 四大组件: 

 

      1.Activity 与用户交互显示 

 

      2.广播  BroadcastReceiver  比如:手机没电了,提示,这个是系统广播。没有页面 

 

      3.服务  Service  后台 

 

      4.内容提供者  ContentPrivuder  访问手机的联系人,本地音乐。建立两个app直接的联系。 

 

  都是为了让Activity变得更好看。 

 
 
 
 

  Android 五大布局: 

 

      
 1.线性布局  LinearLayout 

 

      
 2.相对布局  RelativeLayout 

 

    
   3.绝对布局(基本不用) AbsoluteLayout 

 

      
 4.帧布局    FrameLayout 

 

      5.表格布局  TableLayout 

 
 
 
 

   1.线性布局: 

 

       match 充满父控件    warp 自适应     fill 完全充满设备 

 

            orientation设置子控件摆放方向。 

 

            建立布局要给名字,尽量在 

 

       gravity对于这个控件居中,layout_gravity对于父控件居中 

 

       权重weight   再哪个方向权重要把那个方向的长度定位0dp不然不起效果。weight="i" i表示占几份。 

 

   2.相对布局:  能实现你任何想要的样式 

 

   3.帧布局:点击可穿透 

 

  Activity 生命周期: 

 

    7个生命周期: 

 

      1.onCreate 创建 

 

      2.onStart  启动 

 

      3.onResume 运行 

 

      4.onPause  暂停 

 

      5.onStop   停止 

 

      6.onDestroy销毁 

 

      7.onRestart重启 

 

  生命周期路径: 

 

  1.创建->启动->运行->暂停->停止->销毁 

 

  2.创建->启动->运行->暂停->停止->重新启动->启动->运行。。。。。 

 

  3.创建->启动->运行->暂停->运行(部分遮盖 半透明的Activity来给他盖着) 

 

  4.创建->启动->运行->暂停->(由于内存不足,被销毁) 创建 

 

  5.创建->启动->运行->暂停->停止->创建 

 
 
 
 

  横屏,竖屏切换的生命周期。 

 

      1.竖切横    重新走一次生命周期 

 

      2.横切竖    重新走两次生命周期 

 

  优化: 

 

  1.不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次,6.0之后都之后走一次,系统干掉了一次! 

 

  2.设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次。 

 

  3.设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法。 

 

      强行设置Activity横竖屏  再XML里面配置android:screenOrientation="landscape(portrait)"//横屏,竖屏。