Android进阶总结

1.版本新特性

1.1 Android5.0特性

1.1.1 Android5.0特性

  • (1)全新的MD(Material Design)设计风格
  • (2)全新通知中心设计,下滑看全部通知
  • (3)支持64的ART虚拟机
  • (4)Overview(多任务视觉窗口)
  • (5)Ok Google 语音指令

1.1.2 Android5.0技术特性

  • (1)RcyclerView 替换 ListView和GridView
  • (2)卡片CardView(继承自FrameLayout)
  • (3)3种Notification(普通、折叠、悬挂式(5.0新增))
  • (4)Toolbar与Palette(提取颜色)

1.2 Android6.0特性

1.2.1 Android6.0特性

  • (1)应用管理权限
  • (2)指纹识别(谷歌支持,统一)
  • (3)APP Links(超链接跳转应用)

1.2.2 Android6.0技术特性

  • (1)权限的使用(Normal Permission和Dangerous Permisssion)

1.3 Android7.0特性

1.3.1 Android7.0特性

  • (1)多窗口模式
  • (2)改进java8语言支持
  • (3)快速回复(通知栏快速回复)
  • (4)Daydream VR支持
  • (5)Unicode9支持
  • (6)Google Assistant

1.4 Android8.0特性

1.4.1 Android8.0特性

  • (1)通知渠道 — Notification Channels
  • (2)画中画模式 — PIP(当Activity处于PIP模式时,其实它是出在暂停状态,但其内容会继续展示)
  • (3)自适应图标 — Adaptive Icons
  • (4)固定快捷方式和小部件 — Pinning shortcuts(用于更快速的打开 APP 的某单一任务)

1.5 Android9.0特性

1.5.1 Android9.0特性

  • (1)全面屏(支持刘海屏-凹口屏幕)
  • (2)多摄像头的更多画面
  • (3)GPS定位之外的WiFi定位(室内定位)
  • (4)Android Dashboard(看清楚自己在受手机上都干了哪些事情,从而提醒自己是否过多的浪费了不必要的时间)
  • (5)Wind Down:夜间模式
  • (6)Google Assistant

2.Material Design

2.1

2.1.1 核心思想

将物理世界的体验带进屏幕,再配合虚拟世界的灵活特性,达到真实体验
  • 动画
  • 字体 Roboto
  • 图标 一般使用48dp 48dp,必要可以放大到192dp 192dp
  • 图像

2.2 组件(需要Design Support Library支持)

  • 底部动作条()
  • 卡片(CardView)
  • 提示框(Dialogs)
  • 选择器
  • 滑块控件(Sliders)
  • Snackbar (轻量弹出框)
  • TabLayout
  • TextInputLayout
  • NavigationView(抽屉菜单)
  • CoordinatorLayout(隐藏和折叠Toolbar)
  • CollapsingToolbarLayout(结合CoordinatorLayout实现隐藏)

3.View体系及自定义View

3.1 View的体系

View的继承关系

3.2 自定义View

3.2.1 坐标

  • Android 坐标(以手机屏幕左上角为原点,右X,下Y)
  • View 坐标 (get方法获取对应的View位置及宽高)

3.2.2 滑动

  • layout() 方法
  • offsetLestAndRight和 offsetTopAndBottom
  • layoutParams(改变布局参数)
  • 动画的方式
  • scrollTo(表示移动到具体坐标点)和scrollBy(表示移动的增量为dx、dy)-瞬间完成
  • Scroller(在一定时间内完成)

3.2.3 属性动画

  • ObjectAnimator(Alpha/Rotate/Translate/Scale)
  • 参数1:对应的Object
  • 参数2:操作的属性
  • 参数3:可变的float类型数组
  • ValueAnimator(不提供动画效果,通过监听AnimatorUpdateListener监听数值的变化)
  • AnimationSet动画集合(play()、with、end、before方法)
  • PropertyValuesHolder(组合动画)

3.2.4 事件分发机制

  • dispatchTouchEvent(MotionEvent ev)
    • onInterceptTouchEvent(true,交给OnTouch,false交给子控件的dispatch)
    • onTouchEvent(ture消费,false返回父组件消费)

完整流程:没有事件拦截
完美

OnTouchListener的OnTouch优先于OnTouchEvent

3.2.5 View的工作机制

  • measure(测量宽高)
    • MeasureSpec (int size,int mode)
      • AT_MOST(最大模式)
      • EXACTLY(精确模式)
      • UNSPECIFIED(未指定模式)
  • layout
  • draw

4.多线程编程

4.1 概念

线程:操作系统最小调度单元
进程:是操作系统结构的基础,是系统进行资源分配和调度的基本单位,也可以看做是程序的实体
多线程:
线程资源:(CPU资源和锁资源)

4.2 线程的状态

  • new 创建线程

  • Runnable可运行状态

  • Blocked 阻塞状态

    • wait(交出CPU,同时释放锁资源)
    • join(实际是Obiect.wait)
    • sleep (交出CPU,不释放锁)
    • yield(同sleep,但是不能控制交出CPU具体时间,并且只能让拥有相同优先级的线程有获取CPU的机会)
    • interrputed(可以用来中断一个正处于阻塞状态的线程)
  • Running

  • Dead

4.3 创建线程

  • 继承Thread类,重写run
  • 实现Runnable接口,并重写接口的run方法
  • 实现Callable接口,重写call()方法
  • 接收任务的时候提供一个返回值
  • 可以抛出异常
  • 可以拿到Future对象,可以监听线程调用call方法的状态

4.4 同步方法

  • synchronize(显示锁)
  • Lock
    • ReentrantLock(条件重入锁)
  • volatile(修饰保证值修改后会立刻存到主存中)

4.5 Java内存模型

每个线程会有自己的本地内存,都是先将主内存中的共享变量赋值一份到本内存,进行修改,然后再存到主内存,但是不确定时间,然而被volatile修饰后,修改后会立刻存到主存中.

并发过程三个特性:原子性、可见性和有序性。
原子性:是指对基础数据类型变量的读取和赋值是原子操作,这些操作不可以被中断,要么执行完成,要么不执行(AtomicInterger)
可见性:是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的,所以一般变量用volatile修饰.
有序性:java内存模型中允许编译器和处理器对指令进行重新排序,他不会影响单线程执行的正确性,但是会影响多线程的正确性。一般变量用volatile修饰、synchronize、lock来保证有序性,
  • 堆内存
  • 栈内存
  • 静态存储

4.5 阻塞队列

使用出场景:生产者消费者

4.6 线程池

4.6.1 创建线程池

public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)

corePoolSize:核心线程数
maximumPoolSize:线程池允许最大线程数
keepAliveTime:非核心线程闲置的超时时间
TimeUnit:keepAliveTime参数的时间单位(DAYS/HOURS...)
workQueue:任务队列
ThreadFactory:线程工厂
RejectedExecutionHandler:饱和策略

RejectedExecutionHandler有4种

  • AbordPolicy:表示无法处理新任务,并抛RejectedExecutionException异常;
  • CallerRunsPolicy:用调用者所在的线程来处理任务;
  • DiscardPolicy:不能执行的任务,并将该任务删除;
  • DiscardOldestPolicy:丢弃队列最近的任务,并执行当前的任务。

4.6.2 创建线程池的种类

  • FixedThreadPool(可固定线程数的线程池)
  • CachedThreadPool(一个根据需要创建线程的线程池)
  • SingleThreadExecutor(单个线程的线程池)
  • ScheduledThreadPool(实现定时和周期性任务的线程池)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记住我的名字啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值