phantomVK

Cease to struggle and you cease to live.

简单Android闪屏页控制逻辑

非常简单的闪屏页控制逻辑,包含一些简单功能:点击闪屏页提早结束、软件启动不看闪频页 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5...

CMS并发失效与晋升失败

并发失效 新生代发生垃圾回收时,达到晋升年龄的对象会被移动到老年代。如果老年代没有足够空间容纳晋升对象,CMS为了获得老年代空间,就会从本来的MinorGC退化成FullGC开始垃圾回收。 MinorGC只回收新生代,而FullGC不仅回收老年代,新生代、永久区(PermGen)或元空间(MetaSpace)清理也随之执行。本来只是简单的新生代回收工作扩大到老年代甚至永久代。除此之外,老...

Android沉浸式状态栏变色

一、前言 Android推崇Material Design,其中一个亮点是沉浸式状态栏。该形式状态栏从Android 4.4(v19)开始得到原生支持。这次我们在应用中简单实现一下。 最终实现的效果 二、依赖 在build.gradle(Module:app)中添加依赖项,版本根据Android Studio提示使用最新即可,修改完成记得同步一下。 1 2 3 compile '...

分析ClassLoader原理

类加载 Java类通过编译生成对应.class文件,JVM根据运行需要把类从文件加载到内存并创建实例,ClassLoader负责完成这个加载任务。有了ClassLoader,Java运行时系统不需要知道文件与文件系统的设置。 正是因为Java类必须由某个类加载器装入到内存,我们也可以在运行时才指定类文件。 Java中的三个默认类加载器 除了Bootstrap ClassLoader,...

透明Activity生命周期变化

最近重看《Android开发艺术探索》一书,其中第3页 Activity 生命周期 onPause 到 onResume 过程的确如作者所说“在一般的开发中用不上”,但是作为开发者还是有研究的必要。 onResume 的状态是 Activity 前台可见正在活动,onPause 是置于前台可见停止活动。从后者到前者的变化场景,可以通过一个透明的 Dialog 弹出遮蔽 MainActivi...

Android Menuitem 各种坑

ToolBar上添加Menu,除搜索图标外其他的都收起来。修改ToolBar背景色为深灰色,然后才发现MenuItem里面的背景色还是原来白色。 修改颜色后,ToolBar为深灰,有搜索和菜单图标 打开菜单后 修改MenuItem背景颜色 原来res/values/styles.xml的配置 1 2 3 4 5 6 7 8 9 <resources> ...

Android源码系列(5) -- Looper

一、数据成员 每个Looper拥有一个消息队列,归属于一个线程。 1 2 3 4 5 6 7 8 9 10 static final ThreadLocal<Looper> sThreadLocal = new ThreadLocal<Looper>(); // 由Looper.class控制,静态全局的MainLooper private static Loo...

Android源码系列(4) -- Handler

一、作用 Handler 有两个主要用法: 计划在将来某个时间点处理Message和Runnable 在不同线程里将任务加入 Handler 所对应的队列去执行 二、成员变量 消息队列 1 final MessageQueue mQueue; 消息队列所属Looper 1 final Looper mLooper; 可选Handler回调 1 final C...

深度学习环境配置: Ubuntu16.04 & CUDA8.0

深度学习系统用Ubuntu 16.04,显卡是一张nVidia GTS450,主要用来做简单实验。用比较新的nVidia显卡驱动和CUDA8。 请看完文章再尝试哦 添加下载源 1 2 3 $ cd /etc/apt/ $ sudo cp sources.list sources.list.bak $ sudo vi sources.list 把源添加到文件前面,保存 1 2 3...

Ubuntu 16.04安装Oracle JDK8

简述 虽然在Ubuntu上安装Oracle JDK不是什么难事,但是偶尔配置一次就到处找命令相当令人讨厌。所以这里主要用来记录需要的命令,做个备忘录。 我自己试过在JDK官网下载二进制编译包,也试过apt-get的方式。因为我个人比较懒,而且使用的电脑已经联网,就直接使用apt-get的方式,相比前者方便不少。 安装 1 2 3 $ sudo add-apt-repository p...

Android源码系列(3) -- Message

Handler是Android中一种处理线程消息循环的机制,而Message是Handler放消息的包装。 1 public final class Message implements Parcelable Android常用序列化有Serializable和Parcelable两种。前者历史悠久且范围更广,但序列化过程产生大量小对象。后者性能好,但需要手动实现序列化实现方法且只用在...

ButterKnife使用方法

介绍 ButterKnife是专为Android View而设的注解绑定库,把我们从findViewById()和setOnClicktListener()中全面解放。 使用ButterKnife注意要点: 属性不能用private或static修饰,否则会报错 不能通过注解实现setContentView() 调用ButterKnife.bind(this)之前必须先调...

Android源码系列(2) -- ViewGroup事件分发

前言 上一篇文章 Android View 事件分发源码剖析 详细分析View事件分发的细节。接下来继续学习ViewGroup事件分发。此次源码同样基于Android SDK 23,即Android 6.0。不同Framework源码可能不一样,请自行斟酌。 一、 代码构建 继承 LinearLayout 重写dispatchTouchEvent()、onInterceptTouchE...

解决mac OSX pip OSError: [Errno 1] Operation not permitted

这段时间研究机器学习,然后发现Mac OS的Python库有点旧,就用pip更新一下: 1 $ pip install --upgrade numpy 结果抛出下面异常: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 Exception: Traceback (most recent call last): File ...

Android源码系列(1) -- View事件分发

前言 最近看View的事件分发源码,笔记以注释的形式穿插在代码中,请仔细阅读文章中给出的源码。 源码基于Android 6.0,或有错漏之处,欢迎指正。 一、代码构建 1.1 自定义Button 继承 Button 类观察事件调用方法,并重载 dispatchTouchEvent() 和 onTouchEvent() 。 1 2 3 4 5 6 7 8 9 10 11 12 13...