0%

本文会介绍三种Menu,分别是Options Menu、Context Menu、Popup Menu的使用方式。

Menu菜单是Android应用中非常重要且常见的组成部分,主要可以分为三类:选项菜单、上下文菜单/上下文操作模式以及弹出菜单。它们的主要区别如下:

  • 选项菜单:一个应用的主菜单项,用于放置对应用产生全局影响的操作,如搜索/设置。
  • 上下文菜单:用户长按某一元素时出现的浮动菜单。它提供的操作将影响所选内容,主要应用于列表中的每一项元素(如长按列表项弹出删除对话框)。上下文操作模式将在屏幕顶部栏(菜单栏)显示影响所选内容的操作选项,并允许用户选择多项,一般用于对列表类型的数据进行批量操作。
  • 弹出菜单:以垂直列表形式显示一系列操作选项,一般由某一控件触发,弹出菜单将显示在对应控件的上方或下方。它适用于提供与特定内容相关的大量操作。

下面通过代码实际演示一下这三种菜单实际用法,另外测试是在真机Android5.1上进行的。

一般情况下,Android中每个应用程序一开启就会创建一个任务栈,任务栈的ID是自增长的。最小化的时候,应用程序实际上是后台运行,任务栈是保留的。

  • Standard 标准启动模式:这种模式下每开启一个新的Activity,都会被放置在任务栈的栈顶,不存在复用
  • SingleTop 启动模式:这种模式下,如果栈顶已经存在了要开启的Activity,系统就不会重复创建了,而是利用这个已经存在的Activity,只复用栈顶的Activity
  • SingleTask 启动模式:这种模式下,它要求当前Activity只会在任务栈存在一个实例,如果要开启的 Activity已经在任务栈中,系统会直接复用这个已经存在的Activity,并清空这个 Activity上面所有的栈引用,复用所有已存在的Activity
  • SingleInstance 启动模式:这种模式下,系统会创建一个单独的任务栈,这个任务栈里只有它自己,并且在整个手机操作系统内存里,它是唯一的。比如打电话时的通话界面,全局唯一

然后是Activity的生命周期,被迫退出时的信息状态保存,返回键监听,Activity之间的数据传递等。

Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。这里是Protobuf的官方手册 https://developers.google.cn/protocol-buffers/docs/overview

Android 为我们提供了 LruCache 类,LruCache提供了一种使用LRU缓存的数据结构,里面本质还是对LinkedHashMap的封装。如果你深入研究 LinkedHashMap 的实现原理,就会发现其中就用到了双向链表这种数据结构。LRU (Least Recently Used) 的意思就是近期最少使用算法,它的核心思想就是会优先淘汰那些近期最少使用的缓存对象。

有一个设计模式帮助你的对象知悉现状,不会错过该对象感兴趣的事情,甚至在对象运行时可决定是否要继续被通知,观察者模式是JDK中使用最多的设计模式之一,非常有用。无论是在JDK还是Android开发当中,我们很容易发现观察者模式的运用之处,如我们经常遇到的点击事件,通过Button控件的诸如Listener 的方法,onClickListener就是观察/订阅到了按钮的点击事件,从而就可以执行对相应的逻辑,不同的动作会有不同的观察者,如单击、长按、连续两次点击等都有对应的Listener。

爬虫的原理很简单,无非就是分析HTTP(s)请求,然后通过代码模拟浏览器去发起请求,对于发起网络请求框架可选Apache的HttpClient,然后拿到网页后就需要解析网页关键内容,此时Jsoup就发挥作用了,通过节点选择器 + 表达式可以很方便的拿到想要的数据了。

RPC全称Remote Procedure Call,即远程过程调用,对于调用者无感知这是一个远程调用。目前流行的开源 RPC 框架有阿里的Dubbo、Google 的 gRPC、Twitter 的Finagle 等。本次RPC框架的设计主要参考的是阿里的Dubbo,这里Netty 基本上是作为架构的技术底层而存在的,主要完成高性能的网络通信,从而实现高效的远程调用。

本次将搭建一个最简单的Hello Netty服务器,并且通过这个简单的示例了解了Channel的生命周期。最后将基于Netty搭建一个Websocket网页聊天小程序,可以使用户在Web浏览器或者移动端浏览器进行消息的收发,来深入体会一下使用Netty编码NIO服务器是多么便捷。