Android知识点总结,学习过程梳理

     最近我在公司做一些关于Android方面的培训,就想总结下Android常用到的一些技术点,可以给同事了解下Android的技术点体系,为学习和提升提供方向。简要总结,需要了解,请自行深入学习。


      Android系统的文件结构          Android系统的组织结构     简单的四个分层,各自包含哪些内容
      Activity    
          Activity生命周期,理解生命周期的重要方法和运行逻辑
          Activity横竖屏导致的生命周期的重启和数据保存策略,android:configChanges设置“orientation”“orientation |keyboardHidden”对生命周期重启的影响
          了解Activity的配置信息,Activity的打开方式(显示,隐式)
      Service
          作用:后台服务和跨进程访问
          service 在配置文件中的写法和配置信息,独立进程和依附主进程
          如何打开service ,service 的生命周期
          startService和bindService对service 生命周期的影响和区别,多次start和多次bind同一个service对他们生命周期的影响
          跨进程访问 AIDL的写法    serviceConnection IBinder回调对象
      broadcast
          几种不同的广播类型,普通、系统、有序、粘性、非粘性、应用内  
          无序广播     无法中止广播传播
          有序广播     abortBroadcast     中止广播传播          添加内容setResultExtras(Bundle);
          broadcastReceiver     动态订阅、静态订阅     动态订阅必须用隐形Intent发送广播(显式、隐形Intent的区别 )
      contentProvider
          使用方式          监听数据变化 contentObserver  onchange()
          "content://com.example.testprovider/single"
      动画
          Tween Animation补间动画     Frame Animation帧动画
      Dialog
          AlertDialog     AlertDialog.Builder     builder.create().show()     7种常用的
          自定义Dialog
      Notify 通知     
          一般不会自己实例化     Android 3.0之前和之后写法的区别 Notification.Builder/NotificationCompat.Builder
          getSystemService(...) ->notificationManager.notify()
          Notification 小图、标题、文本内容
          PendingIntent、Intent的区别     即将发生的意图     马上发生的意图
          大视图(Big View) android4.1+     notification.setStyle(....);
通知栏展示进度          builder.setProgress(....)
自定义通知     RemoteViews          builder.setcontent(..)     通过控件ID设置内容     remoteViews.setImageViewIcon(viewid,icon)
      Fragment 的使用
      自定义View
          自定义View 的属性,10种基础属性
获取自定义属性的值
重写onMesure     自己测量
重写onDraw          postInvalidate();->重绘onDraw()
使用时引入命名空间
      跨进程通信、应用程序间通信
          AIDL     广播     ContentProvider     Activity
      线程间通信     开启不同线程方式的优缺点
          Handler的用法    Handler.post(Runnable)      注意:这里没有起新线程          Handler消息处理的机制:Looper消息循环、Message消息、Thread、MessageQueue消息队列互相的关系和作用
          Activity.runOnUiThread(Runnable)      View.post(Runnable) .postDelay(Runnable,long)     
          AsyncTask
          HandlerThread     起新线程,注意:需要有主线程的looper的handler才能操作UI线程
          Thread          ExecutorService线程池的用法
      XML解析的几种方式     JSON解析     解析库
      数据存储
          sharePreferences的用法
          IO流文件     序列化对象的写入文件方式
          网络存储
          SQLite
          属性系统     Sytem Property(C++)
          contentProvider
      Android中常见的设计模式
          工程模式
          单例     例如:日历     CalendarDatabaseHelper
          观察者
          代理模式
          提供者模式
          抽象工厂
MVC     例如:ListView->View , getData()->model , Adapter->control
      OOM     ANR     避免出现这些问题
      代码混淆     注意第三方包尽量避免混淆
      View和ViewGroup触控的事件
          view      分发触控事件dispatchTouchEvent          触发触控事件onTouchEvent
          viewgroup          onIterceptTouchEvent拦截触控事件
          参考经典的三层结构图 LinearLayout1=>LinearLayout2=>view
      内存优化的思路
          调试工具,TraceView      自动化测试工具:monkey         monkey runner 
          可以看出各个函数的调用时间,调用次数,平均调用时间,时间占用百分比
      插件化程序          组件化          动态加载
          Dex的最大方法数     Integer的最大数=》65535
          java : classLoader          Android : DexClassLoader/PathClassLoader
     第三方库
          Okhttp
          Fresco     原理     bitmap 在3.0前后的存储机制的问题
      内存泄漏    
          查询数据库没有关闭cursor
          构造Adapter,没有使用ContentView
          Bitmap没有被释放
          对象被生命周期长的对象引用
      内存溢出
          图片过大
listview写法错误
横竖屏切换,写法问题
          方法:Android自定义堆大小,优化Dalvik的内存,软引用
      强引用     软引用     弱引用     虚引用     的区别
      耗电问题
          大数据传输     =>     GZIP下载数据
          网络切换    =>网络连接判断
          解析大量文本数据     =>高效率的数据格式解析方式
          回收JAVA对象     少用GPS     少用浮点数运算     获取屏幕数据,使用缓存     避免service不停使用sleep,请求          使用AlarmManager定时服务          提醒电量



























          


     












     
     

你可能感兴趣的:(原创分享,知识点总结,原生,知识体系,总结,学习,路线,技术)