Android之People&Roles
摘要:【People And Roles】1、Contributor(平台开发者) 一个平台开发者是为AOSP源码做贡献的人,包括谷歌员工或其它公司的员工,以及正在为android贡献的杰出开发者。他们使用同样的工具(git、repo和gerrit),遵循同样的code-review流程在代码循环上有同样的要求。2、Developer(应用开发者) 一个应用开发者是一个编写运行在android设备上应用程序的工程师。实际上,平台开发者和应用开发者在技术集合上没有差别,但AOSP使用这两个称呼来区别使用android平台的人和做贡献android平台的人。3、Verifier(检验者) 一个检验者负责
阅读全文
Linux之步初
摘要:【Linux Operating System Initial】1、将硬件细节与程序员隔离开来、同时提供一个简洁的命名文件方式的程序,就是操作系统。2、操作系统的作用是为用户提供一台等价的扩展计算机,或称虚拟机,它比低层硬件更容易编程。3、为了使同一个程序在所有不同的UNIX系统上都能运行,IEEE拟定了一个UNIX的标准,称作POSIX,该标准现在被大多数UNIX支持。POSIX定义了相互兼容的UNIX系统必须支持的一个最小的系统调用接口,实际上,一些其他操作系统现在也支持POSIX接口。4、在许多操作系统中,除进程地址空间以外的所有信息均存放在操作系统管理的一张表中,称为进程表。5、一个(
阅读全文
还能更坑爹吗?细数Android系统9大缺陷
摘要:【细数Android系统9大缺陷】1、Android系统手机泄密 信息时代很严重2、不支持关机闹铃 与用户需求严重背离3、拨号后自动挂断电话 通话BUG频繁出现4、对硬件配置要求高 制造成本增加5、系统偷跑流量 流量流失情况惊人6、系统费电严重 安卓手机续航不足7、死机现象频现 Android系统普遍存在8、系统“智商不高”计算器不会计算9、短信功能也bug 随机乱发惹人烦
阅读全文
数据结构之红黑树
摘要:【红黑树】 【性质】 性质1.节点是红色或黑色。 性质2. 根是黑色。 性质3 每个叶节点是黑色的。 性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。【为什么平衡】 要知道为什么这些特性确保了这个结果,注意到性质4导致了路径不能有两个毗连的红色节点就足够了。最短的可能路径都是黑色节点,最长的可能路径有交替的红色和黑色节点。因为根据性质5所有最长的路径都有相同数目的黑色节点,这就表明了没有路径能多于任何其他路径的两倍长。
阅读全文
Android之App的六种UI元素
摘要:【App的六种UI元素】 1、Notification 2、Layout 3、Widget 4、Dialog 5、Toast 6、Menu【图解】
阅读全文
Android之AndroidManifest.xml
摘要:【The AndroidManifest.xml File】 每一个应用程序必须有有一个AndroidManifest.xml文件(精确使用这个名字)在它的根目录。manifest文件展现给Android系统基本的程序信息。manifest文件做以下事情: 1、它命名了此应用程序的Java包。包名用来惟一标识应用程序。 2、描述应用程序组件--activities、services、broadcast receivers和content providers。它给出每个组件的名字和他们的能力(哪个Intent消息它们可以处理)。这些声明让Android知道哪个组件可以被启动以及在何时被启动。 3
阅读全文
Android之Processes and Threads
摘要:【Processes and Threads】 当一个应用程序组件开始,应用程序没有任何组件在运行,Android系统开启一个新Linux进程为应用程序伴随一个单独的执行线程。默认,所有同一个进程所有组件运行在同一个进程 和线程(称为主线程)。如果一个应用程序组件开启并且已经有一个那个应用中程序的进程(因为另一个这个应用程序的组件存在),那么组件使用同一个线程。可是,你可以安排不同的组件在你的应用程序里运行在不同的进程,并且你可以为任何进程创建线程。【Processes】 默认,同一应用程序的所有组件运行在同一个进程,大多数应用不应当改变这点。可是,如果你发现你需要控制哪一个组件属于哪一个进程
阅读全文
Android之Content ProviderII
摘要:【Creating a Content Provider】 要建立一个content provider,你必须: 1、建立一个系统来存储数据。大多数content providers存在他们的数据使用Android的文件存在方法或SQLite数据库,但你可以存储你的数据你希望的任何方法。Android提供 SQLiteOpenHelper类来帮助你建立一个数据库和SQLiteDatabase来管理它。 2、扩展ContentProvider类来提供数据的访问。 3、声明content provider在manifest文件为你的应用程序(AndroidManifest.xml)。 下面的部分有
阅读全文
Android之Content Providers
摘要:【Content Providers】 Content Providers存储和取得数据,以及让它对所有应用程序可见。这是惟一的跨应用程序共享数据的方法;没有一个所有Android包都能访问的公共存储区域。 Android整理了一大堆content provider给公共数据类型(音频、视频、图像、联系人信息等待)。你能看见他们中的一些在android.provider包中。你能查询providers拥有的数据(虽然,有一些,你必须获取合适的权限来读取数据)。 如果你希望做你自己的数公共数据,你有两个选项:你可以创建你自己的content provider(一个ContentProvider子
阅读全文
Android之ServiceII
摘要:【Creating a Bound Service】 一个绑定service允许组件通过bindService()绑定它,为了建立一个长期存在的连接(通常不允许组件使用startService()启动)。 你应该建立一个绑定的service当你希望和service交互从activity或你应用程序的其它组件或者暴露应用程序的功能给其它应用程序,通过IPC。 为了创建一个绑定service,你必须实现onBind()回调方法来返回一个IBinder,定义了和service的交互接口。其它应用程序组件能调bindService()来取得接口,然后开始调用service中的方法。service存活于
阅读全文
Android之Services
摘要:【Services】 一个Service是一个应用程序组件,它能完成长时间运行的操作在后台,并且不提供用户接口。另一个应用程序组件能开启一个service并且它将继续运行在后台即使用户转换到另一个应用程序。额外的,一个组件可以被绑定到一个service来和它交互甚至完成进程间通信。例如,一个service可能操作网络带伤、播放音乐、执行I/O或和一个content provider交互,所有这些都是在后台进行。 一个service主要有两个用途: 1、Started 一个service被开启当一个应用程序组件(例如activity)用startService()开启它。一旦开启,一个servi
阅读全文
Android之ActivityII
摘要:【Managing the Activity Lifecycle】 管理你的activity的生命周期通过实现回调函数非常关键对开发一个健壮和有弹性的应用程序。一个activity的生命周期直接被与其相关联的其它activity影响,task和bask stack。 一个activity可以存在于主要的三种状态: 1、Resumed activity在前景并且拥有用户焦点。(这个状态有时也叫”running“) 2、Paused 另一个activity在前景并且拥有用户焦点,但这个仍然可见。也就是说,另一个activity可见在这个的上面,当前activity部分透明或没有覆盖整个屏幕。一个p
阅读全文
Android之Activity
摘要:【Activity】 一个Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地图。每一个activity被给予一个窗口,在上面可以绘制用户接口。窗口通常充满屏幕,但也可以小于屏幕而浮于其它窗口之上。 一个应用程序通常由多个activities组成,他们通常是松耦合关系。通常,一个应用程序中的activity被指定为"main"activity,当第一次启动应用程序的时候呈现给用户的那个activity。每一个activity然后可以启动另一个activity为了完成不同的动作。每一次一个activity启动
阅读全文
Android之Application Resources
摘要:【Application resources】 一个Android应用不仅仅由代码组件-它要求独立于代码的资源,例如图像、音频文件以及任何涉及到应用程序视觉表达的东西。例如,你可以定义动画、菜单、颜色、以及activity用户接口的布局用XML文件。使用应用程序资源使得它很容易你应用程序的多变的特性而不需要修改代码并且能过提供一系统可选的资源,使得你能优化你的应用程序为一各种不同的设备配置(例如不同语言和不同屏幕大小)。 每一个引入你应用程序的资源,SDK编译工具定义一个惟一的整数ID,你可以用来引用资源从你的应用程序代码里或定义在XML中的其它资源。例如,如果你的应用程序包含一个图像文件名字
阅读全文
Android之The Manifest File
摘要:【The Manifest File】 在Android系统能够启动一个应用程序组件之前,系统必须通过阅读应用程序AndroidManifest.xml文件来知道组件的存在。你的应用程序必须声明它所有的组件在这个文件中,必须放在应用程序项目根目录。 Manifest文件做一系列事情包括声明应用程序组件,例如: 1、认证任何应用程序请求的用户权限,例如网络访问或者读用户联系人的权限。 2、声明应用程序所需要的最小的API级别。 3、声明该应用程序使用的硬件或软件的特点,例如摄像头、蓝牙或多等触摸。 4、需要链接的API库,例如Google Maps Library。 5、其它【Declarein
阅读全文
Android之Activating Components
摘要:【Activating Components】 4种组件类中的3种-activities、services、broadcast-被一个称为intent的异步消息激活。Intents让单独的组件在运行时绑定在一起(你可以把他们看作从其它组件请求行为的消息),不管那个组件属不属于你的应用程序。 intent被Intent对象创建,用来定义一个消息以启动一个指定组件或者是指定类型的组件-一个Intent可以是显示的或隐式的。 对activities和services来讲,一个intent定义了执行的行为(例如,查看或发送某个事情),可以指定要操作的URI(组件启动需要知道的事情)。例如,一个inte
阅读全文
Android之Application Components
摘要:【Application Components】 应用程序组件是Android应用程序的基本构建块。每个组件是一个系统能够进入你应用程序的入口点。对用户来说并不是所有的组件都是实际的入口点,而是其中一些依赖于另一些,但是每个都有自己的实体的存在,并且扮演着一个独特的角色--每一个都是帮助你定义自己应用程序整体行为的一个单独构建块。 有4种不同的应用程序组件,每一种都提供不同的服务,每一种都一个不同的生命周期,生命周期定义了组件的创建和消亡。 接下来介绍上述的4种不同的应用程序组件。【Activities】 一个activity代表一个拥有一个用户接口的屏幕。例如,电子邮件应用程序可能有一个ac
阅读全文
Android之Application Fundamentals
摘要:【Application Fundamentals】 Android应用程序使用Java语言编写。Android SDK工具编译代码(包括任何数据和资源文件),将其打包成Android package,一种以.apk结果的存档文件。所有的代码只是一个.apk文件,培训班被认为是一个应用程序,并且Android授权应用程序使用它来安装应用程序。 一量在一台设置上安装,每个应用程序生存在它自己的沙箱: 1、Android是一个多用户的Linux系统,其中每一个应用程序都是一个不同的用户。 2、默认系统赋予每个应用程序一个与惟一的Linux user ID(ID只被系统使用,对应用程序不可见)。系统
阅读全文
Android之Dev Guide
摘要:【What is Android?】 Android是一个包含操作系统、中间件、关键应用程序的软件栈,Android SDK提供必要的工具和API使得能够用Java语言在Android平台上开发应用程序。【Android Architecture】 下图展现了Android操作系统的主要组件(分层架构)。【Application Framework】 通过提供开放开发平台,Android提供开发者构建丰富的和创新的应用程序的功能。开发者可以自由的利用硬件设备、访问位置信息、运行后台服务、设置警告、添加状态条通知等等。 跟核心应用程序一样,开发者拥有这些API的全部权限。应用程序架构的目的是简化
阅读全文
Java线程新特征之同步
摘要:【锁】1、普通锁。 importjava.util.concurrent.locks.Lock; importjava.util.concurrent.locks.ReentrantLock; Lock lock =newReentrantLock(); myLock.lock(); myLock.unlock();2、读写锁。 Lock接口以及对象,使用它,很优雅的控制了竞争资源的安全访问,但是这种锁不区分读写,称这种锁为普通锁。为了提高性能,Java提供了读写锁,在读的地方使用读锁,在写的地方使用写锁,灵活控制,在一定程度上提高了程序的执行效率。 importjava.util.concu
阅读全文
Java线程新特征之有返回值的线程
摘要:【有返回值的线程】1、可返回值的任务必须实现Callable接口,类似的,无返回值的任务必须Runnable接口。2、执行Callable任务后,可以获取一个Future的对象,在该对象上调用get就可以获取到Callable任务返回的Object了。【实例】
阅读全文
Java线程新特征之线程池
摘要:【线程池】1、固定大小线程池 importjava.util.concurrent.Executors; importjava.util.concurrent.ExecutorService; ExecutorService pool = Executors.newFixedThreadPool(2); pool.execute(t1); pool.shutdown();2、单任务线程池 ExecutorService pool = Executors.newSingleThreadExecutor();3、可变尺寸线程池 ExecutorService pool = Executors.ne
阅读全文
Java之线程初步II
摘要:【线程的交互】1、wait()、notify()、notifyAll()。 注:必须从同步环境内调用wait()、notify()、notifyAll()方法。 Notify是瞬间的事件,不是持续性事件。如果在wait()前调用了notify(),对wait没影响,也意味着wait将永远等待。2、Thread.sleep()。线程休眠。【守护线程】 方法:setDaemon(true) 注:JRE判断程序是否执行结束的标准是所有的前台执线程行完毕了,而不管后台线程的状态。【其它】 关键字:volatile
阅读全文