Android Tech And Thoughts.

Android Tech And Thoughts.

Recording myself sometimes helping others

Java并发编程
Java并发性和多线程介绍多线程技术,使得在一个程序内部能拥有多个线程并行执行。一个线程的执行可以被认为是一个CPU在执行该程序。当一个程序运行在多线程下,就好像有多个CPU在同时执行该程序。 如果一个线程在读一个内存时,另一个线程正向该内存进行写操作,那进行读操作的那个线程将获得什么结果呢?是写操作之前旧的值?还是写操作成功之后的新值?或是一半新一半旧的值?或者,如果是两个线程同时写同一个内存,在操作完成后将会是什么结果呢?是第一个线程写入的值?还是第二个线程写入的值?还是两个线程写入的一个混合值?因此如没有合适的预防措施,任何结果都是可能的。而且这种行为的发生甚至不能预测,所以结果...
Producer consumer model
Producer-Consumer模式在很多场景种都有相应的体现,比如线程池,对象池,MQ等,Pro-Con的本质是在生产者与消费者之间引入一个通道(Channel暂且理解为一个队列),该通道主要用于 ①控制生产者与消费者的相对速率,尽可能地保证生产的Product尽快被消费,另一方面②对二者进行解耦 ,生产者和消费者在各自的线程中,通过Channel连接,二者无直接关联。 Producer-Consumer中的角色1.Product:生产者线程锁需要的产品2.Producer:负责生产Product,并将其放入到队列Channel中3.Consumer:从队列Channel中获取对应...
Window
什么是Window一台Android手机屏幕上显示的内容就是由一个个Window组合而成的,顶部的状态栏是一个WIndow,底部的导航栏也是一个Window,中间自己的应用显示区域也是一块大Window,Toast,Dialog也都对应一个自己的WIndow。而Android中对这些Window的管理是通过一个框架的服务–WMS。 上面展示了通常状况下,屏幕中可见的 Window,其中Activity对应中间的那个Window,该 Window对应着DecorView,它也是Activity中的顶级View(它实际上是一个FrameLayout),DecorView包含了标题栏和内容类...
Decorator Pattern
装饰者模式的作用主要在于控制类的数量。其核心思想是利用组合来代替继承,从而动态地扩展类的功能。 后者更好地控制了类的数量,假设需要扩展 n 个功能,那么继承所需的类的数量为 n! 数量级而采用装饰着模式则为 O(n) 先给出以下结论,带着为什么来思考: 装饰者和被装饰对象有相同的超类型(接口或者类都ok) 可以使用一个或者多个装饰者包装一个对象 既然装饰者和被装饰者具有相同的超类型,所以在任何需要原始对象(被包装的)的场合,可以用装饰过的对象代替它 装饰者可以在所委托被装饰者的行为之前/或之后,加上自己的行为,以达到特定的目的 对象可以在任何时候被装饰,所以可以在运行时动态地、不限量地...
Slide Conflict part one
开启全面屏体验 | 手势导航(一)Android 10 中添加了新的系统导航模式,用户可以通过手势交互执行后退、返回主屏以及打开设备助手等操作现有的三键导航模式仍被保留(后退、返回首页以及切换最近使用的应用),搭载 Android 10 及以上版本系统的所有设备都要求保留这一导航模式。 本文着重为开发者介绍如何让应用支持手势导航,涵盖的主题如下: 开启全面屏体验,让应用的内容铺满整个屏幕 处理与系统UI的视觉冲突 处理与系统手势之间的冲突 各种全面屏体验场景,以及如何适配他们 全面屏体验 我使用 “边到边”(edge to edge)一词来描述那种将内容铺满整个屏幕,以实现更沉浸式体...
Factory design pattern
在面向对象的世界里,工厂模式被广泛地应用于项目中,也许你没听过,但你肯定用过。简单地来说,工厂模式地出现源于增加程序的可扩展性,降低耦合度。之所以叫工厂模式,是用工厂生产产品来形象比如代码中生产对象的过程。 简单工厂模式 工厂方法模式 抽象工厂模式 简单工厂模式 | simple Factory PatternBefore patterns:首先设计两种汽车,分别实现 “Auto” 接口。 1public interface Auto{2 //所有汽车都可以驾驶3 public void drive();4}56//小轿车7public class Car imp...
观察者模式
观察者模式(JDK中运用最多的模式之一) - 让你的对象知悉现状TODO:观察者模式是不是也利用了策略模式的因素 实例分析:WeatherDate 对象负责追踪目前的天气状况(温度、湿度、气压),我们希望能建立一个应用,有三种布告板,分别显示目前的状况·气象统计及简单的预报。当 WeatherObject 对象获得最新的测量数据时,三种布告板必须实时更新。另外,我们希望能提供一些API,以供客户实现自己的布告板。 此系统的三个部分: 气象站(获取数据的传感器) WeatherData对象(追踪数据) 布告板(显示天气状况给用户看) 1public class WeatherData&...
设计模式开篇
设计模式解决什么样的问题我们通过继承来实现代码复用,通过扩展接口来实现功能扩展。不过当需求不断地变更,代码量越来越庞大地时候,仅仅靠这两种方式并不能很好地解决问题,例如通过复写改变子类行为会导致代码在多个子类重复。单纯地使用接口,则带来改变的困难,如果接口改变了,可能要在多处修改。 封装变化是每一个设计模式背后共有的思想设计原则: 把变化的部分取出来并封装起来,以便以后可以轻易地改动或者扩展此部分,而不影响不需要变化的其它部分 · 例如一个Duck有很多飞行行为,如果我们在每个子类去实现接口,我们就被实现绑的死死的,所以,从另一个角度来说,我们可以将飞行行为与子类分离(不是通过...
C Language Tutorial
译者注:这是一份C指南,目的在于指导C初学者快速开始并了解C语言,其并不能代替市面上大多数的教材。这里推荐一本非常著名且优秀的C语言教材: The C Programming Language –ANSI C –By Brian W.C. Kernighan & M. Ritchies 大纲: 第一个程序 计算 循环 宏常量 条件语句 指针 数组 字符数组 I/O功能 函数 命令行参数 图形接口 1. A First Program1#include<stdio.h>23void main(){4 printf("\nHello world...