Activity 显示调用
Android 系统内部已经做了很多的封装,这使得启动一个 Activity 变得异常简单。在显示调用的情况下,只需要通过如下代码即可完成:
|
|
源码分析
我的源码是基于 Android 8.0 进行源码分析,那么我们就从 Activity 的 startActivity 方法开始分析,经过一系列的源码追踪会来到 startActivityForResult 方法,代码如下:
|
|
用文字构建一个理想的世界
Android 系统内部已经做了很多的封装,这使得启动一个 Activity 变得异常简单。在显示调用的情况下,只需要通过如下代码即可完成:
|
|
我的源码是基于 Android 8.0 进行源码分析,那么我们就从 Activity 的 startActivity 方法开始分析,经过一系列的源码追踪会来到 startActivityForResult 方法,代码如下:
|
|
OkHttp 是一款为 Java 项目和 Android 应用设计的 HTTP 与 HTTP/2 的客户端。
HTTP 是现代应用网络比较流行的传输协议,是我们所交换数据的媒介。高效的 HTTP 使得你加载的数据更快以及节省带宽。
OkHttp 是一个默认高效的 HTTP 客户端:
当网络异常时,OkHttp 依然会工作:它会默默地从常见的连接问题中恢复过来。如果你的服务有多个 IP 地址,OkHttp 会尝试在第一次连接失败的时候更换 IP 地址。这对IPv4 + IPv6和冗余数据中心托管的服务是必需的。OkHttp发起与现代TLS功能(SNI,ALPN)的新连接,并且如果握手失败则回退到TLS 1.0。
作为远程对象的基类,通过 IBinder 被定义为一个轻量级远程过程调用机制(RPC)的核心部分。这个类一个是 IBinder 的实现类,提供了这种对象的标准的本地实现。
绝大部分开发者不是直接实现这个类,而是为了描述所需接口使用 aidl 工具,使用它生成合适的 Binder 子类。然而你也可以继承 Binder 类实现自定义 RPC,或者作为能够在进程间共享的媒介使用简单实例化的原生 Binder 对象。
这个类只是一个原始 IPC 的基础;它没有影响一个应用的生命周期,只要进程在运行时创建了 Binder,它就有效。为了正确的使用它,你必须在高级的让系统知道你的进程应该保持运行的应该组件(Service,Activity 或 ContentProvider)的上下文中工作。
你必须关注你的进程可能消失的情况,这种情况下,需要你在进程再次开始的时候,重新创建和连接 Binder。例如:如果你在一个 Activity 中使用 Binder,在 Activity 没有显示的时候,你的 Activity 进程可能随时被杀死;如果Activity是之后重新创建的,你需要创建一个新的 Binder,并且把它放回所在的位置;你需要注意,你的进程可能是通过其他原因(比如接受广播)启动,这种情况下,需要重新创建Activity,并且新建一个新的 Binder 对象。
Android 中的 ClassLoader 工作交给了 BaseDexClassLoader 来处理。
ClassLoader 是个抽象类,其直接子类有 BaseDexClassLoader 和 SecureClassLoader。
SecureClassLoader 的子类是 URLClassLoader,其只能用来加载 jar 文件,这在 Android 的 Dalvik/ART 上没法使用的。
BaseDexClassLoader 的子类是 PathClassLoader,DexClassLoader 和 InMemoryDexClassLoader。
随着谷歌的 AlphaGo 以 4:1 的悬殊比分轻松击败韩国著名九段围棋大师李世石,人工智能(AI)走进了人们的视野,这个沉寂了近 30 年的名词 —— 人工智能,异军突起,正在逐渐在每个细节上改变我们的生产能力,改变我们的生活。
到现在,靠机器人来扫地,靠刷脸来取钱,靠自动驾驶来周游世界已然不是什么科幻小说中的内容了,这些事情已经真实的发生在我们的身边。
2017 年 7 月 8 日,国务院发布文件「国务院关于印发新一代人工智能发展规划的通知」,为的便是抢抓人工智能发展的重大战略机遇,构筑我国人工智能发展的先发优势,加快建设创新型国家和世界科技强国。
在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。
强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A a = new A()这个意思。
今天是 2017 年最后一个工作日,时间过得真快,一年的时间就在我的眼前这样的溜走了,这一年发生了很多事情,对我也有很大的触动,也可以这么说,这一年我成长了很多。
记得去年我还在教 java 的知识,做教案,自己学习,为的是让我的学生能通过我的教学,掌握他们将来吃饭的工具。但是,这也暴露出一个问题,我利用我的所有时间总结经验,传授知识,然而我的成长点在哪里?我是在不断的放电,看不到自己的成长点在哪里。
我觉得我的青春不应该浪费在讲台,而应该投入到实际的生产实践中去。因此,今年的年初,我完成了这一职业上的转型。
来到公司以后,可以说成长速度飞快,做一款 APP 的过程中,发现问题,解决问题,苦思冥想,绞尽脑汁,这是我想要的工作状态。这一年,项目基本上一个接着一个的,比较紧密,过得比较充实,我很满意。
Parcelable
和 Serializable
经常用于序列化和反序列化 java 对象。它们两个的不同经常围绕着实现方式和性能结果被提出。它们的差别在于: