
Android—基础部分
文章平均质量分 68
CoorChice
成为你所想相信你要成为的人。
展开
-
【Kotlin开源】这城市太寂寞,《伴》在你身边
这城市太寂寞,《伴》在你身边《伴》之序《伴》 是一款完全的Kotlin项目,她展示了部分Kotlin 的知识。诸如类、函数、变量、流程控制语句等基础知识点,以及单例、伴生、数据类、延迟注入、转型、扩展方法、扩展属性等进阶知识点。随着项目的发展,CoorChice期待加入更多有趣实用的特性进去。在 《伴》 中,CoorChice向你展示了如何使用Kotlin快速的构建一个App,以及如何...原创 2019-01-09 10:56:59 · 225 阅读 · 0 评论 -
用两张图告诉你,为什么你的App会卡顿?
有什么料?从这篇文章中你能获得这些料:知道setContentView()之后发生了什么?知道Android究竟是如何在屏幕上显示我们期望的画面的?对Android的视图架构有整体把握。学会从根源处分析画面卡顿的原因。掌握如何编写一个流畅的App的技巧。从源码中学习Android的细想。收获两张自制图,帮助你理解Android的视图架构。从setContentView()...原创 2019-01-08 12:08:02 · 1283 阅读 · 0 评论 -
3分钟看懂Activity启动流程
背景介绍从事开发到了一定阶段,想要提高就必须搞明白系统的一些工作原理。为什么?因为只有明白了这些,你才能针对平台的特性写出优质的代码。当遇到棘手的问题时,你才能更快速的结合系统原理去寻找最优解决方案。底层基础决定上层建筑。这个原理在开发中同样适用。我是提倡 回归基础 的。高级的功能总是由最基本的元件构成,就好比为数不多的元素构成了我们难以想象的丰富的物质世界一样。只有掌握了最根本的内容,才能促...原创 2019-01-08 12:00:53 · 588 阅读 · 0 评论 -
你真应该再多了解些Handler机制
背景介绍我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper、Handler、MessageQueue究竟在这背后进行了怎样的运作。本期,让我们一起从Thread开始,逐步探寻这个完美的线程链背后的秘密。注意,大部分分析在代码中,所以请仔细关注代码哦!从Tre...原创 2019-01-08 11:59:07 · 203 阅读 · 0 评论 -
这些是你需要知道的Android内存基础
背景介绍Java优势之一就是其具有垃圾回收机制。在大部分情况下,JVM的GC(垃圾回收器)能够帮助我们回那些不可到达的对象(就是未被引用的对象)。当然,在一些情况下,我们仍然需要自己去释放内存(就是把对象引用置null,把容器、数组清空),否则就会引起内存泄漏,内存泄漏严重时将容易引发OutOfMemoryError,详情见内存泄漏。此外,由于GC会停止所有的线程,包括UI线程,所以频繁的...原创 2019-01-08 11:58:21 · 204 阅读 · 0 评论 -
Android内存基础——内存泄漏
个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 !同时,搜索微信公众号CoorChice,或扫描文章末尾二维码,可以关注我的微信公众号。同期文章也将会优先推送到微信公众号中,以提醒您有新鲜文章出炉。背景介绍内存泄漏一种情况是一块内存没有引用指向它,却没被回收,这种情况已经由Java虚拟机的GC...原创 2019-01-08 11:57:29 · 131 阅读 · 0 评论 -
Android内存基础——内存抖动
个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 !同时,搜索微信公众号CoorChice,或扫描文章末尾二维码,可以关注我的微信公众号。同期文章也将会优先推送到微信公众号中,以提醒您有新鲜文章出炉。参考资料Google官方讲解视屏背景介绍在Java内存管理机制中我提到过内存抖动会引起频繁的...原创 2019-01-08 11:56:11 · 248 阅读 · 0 评论 -
Android线程——使用ExecutorService类来实现线程的管理
个人博客CoorChice,https://chenbingx.github.io/ ,最新文章将会首发CoorChice的博客,欢迎探索哦 !同时,搜索微信公众号CoorChice,或扫描文章末尾二维码,可以关注我的微信公众号。同期文章也将会优先推送到微信公众号中,以提醒您有新鲜文章出炉。在Java 5之后,ExecutorService类被引入,主要是为了方便线程的统一管理。Exe...原创 2019-01-04 15:49:46 · 607 阅读 · 0 评论 -
快来看看你过去处理异常Exception的方式是否足够优雅?
背景介绍我们每天都需要与各种个样的异常打交到,但是我们对异常了解吗?对其处理方式正确吗?了解的话就算了,不了解的可以看看下面的内容。打开ExceptionException的分类先来看看下面这张图:从图中可以看出:Error(错误)和Exception(异常)都继承自Throwable类,我们重点关注Exception;异常类分为检查异常(直接继承自Exception,除Run...原创 2019-01-04 15:49:03 · 800 阅读 · 0 评论 -
原来Android触控机制竟是这样的?
有什么料?从这篇文章中你能获得这些料:了解一次触摸事件究竟是如何产生的?了解触摸事件究竟是如何传递的?学会从根源处分析你的App中的滑动冲突。能够更自信的创作出具有复杂交互的App。收获一张图,帮助你理解和使用Android的触摸事件分发。老规矩,先来看图吧。在你触摸屏幕之后首先在上图中找到那只黑手,它是一次触摸事件的开始。当屏幕被触摸,Linux内核会将硬件产生的触...原创 2019-01-08 12:09:18 · 1088 阅读 · 0 评论 -
关于线程,还有这些是你需要知道的!
有什么料?进一步理解多线程场景下会出现的问题;学会正确处理并发操作中的通讯和同步。现在,多了解些线程吧在日常开发中,线程常常被用作为提升程序效率的重要手段。在CoorChice的这篇文章中,CoorChice介绍了线程的基本运作。链接:【你知道Thread线程是如何运作的吗?:http://www.jianshu.com/p/8862bd2b6a29】本篇,CoorChice...原创 2019-01-08 12:09:56 · 204 阅读 · 0 评论 -
神奇!几行代码就能轻松把图片转为字符图
准备阶段首先需要安装一个Python的图形处理库。终端直接输入:brew install Pillow实现阶段不多说,直接上打码。from PIL import Image # 导入Pillow的Image模块IMG = "/Users/##########/avart.jpg" # 需要处理掉的图片路径filePath = "/#######...原创 2019-01-09 10:56:11 · 862 阅读 · 0 评论 -
在Android NDK下打印log
在Android Studio NDK中打印log示例// 导入必须的android/log.h头文件#include <android/log.h>// 可选。定义方便使用的宏#definde LOGE(...) __android_log_print(ANDROID_LOG_ERROR, "Tag", __VA_ARGS__)int main(int argc, c...原创 2019-01-09 10:55:13 · 513 阅读 · 0 评论 -
NDK开发基本常识
重要的事情说3遍请使用 Andorid Studio 2.2 及以上版本!请使用 Andorid Studio 2.2 及以上版本!请使用 Andorid Studio 2.2 及以上版本!下载安装NDK开发环境对着这个说明一步一步搞,1分钟妥妥的集成看完这个链接再接着往下看啊!尤其是 CMake 的配置部分,需要认真看下。将原生代码编译成.os照着上一步一切顺利的话,就可以尝试开...原创 2019-01-09 10:54:28 · 237 阅读 · 0 评论 -
三步掌握Android中的AIDL
AIDL的使用第一步 创建aidl接口文件AndroidStudio中直接右键创建,或者自己一步步建目录喽。创建完成后会生成一个XXX.aidl接口文件,我们需要根据需求在这个接口类中添加接口。在看接口怎么写前,先记住以下三点:支持的参数类型八种基本数据类型;String、CharSequence;List、Map,它们中的数据类型也应该是AIDL支持的;实现Parcela...原创 2019-01-09 10:49:33 · 235 阅读 · 0 评论 -
你还在被触摸事件困扰吗?看看这篇吧
在CoorChice的这篇文章《原来Android触控机制竟是这样的?》http://www.jianshu.com/p/b7cef3b3e703 中,CoorChice简要的介绍了一下Android中触摸事件的大致流程。于做应用而言,实际我们只需要清楚文中蓝色那部分流程就行。本篇文章中,CoorChice将针对这个流程进行分析。为什么这个流程会是这个样子?以及这个流程中有什么特别之处。...原创 2019-01-09 10:48:52 · 733 阅读 · 0 评论 -
Binder机制之一次响应的故事
Binder系列第一篇:《从getSystemService()开始,开撸Binder通讯机制》http://www.jianshu.com/p/1050ce12bc1eBinder系列第二篇:《能用【白话文】来分析Binder通讯机制?》http://www.jianshu.com/p/fe816777f2cfBinder系列第三篇:《Binder机制之一次响应的故事》http:...原创 2019-01-09 10:47:50 · 511 阅读 · 0 评论 -
能用【白话文】来分析Binder通讯机制?
Binder系列第一篇:《从getSystemService()开始,开撸Binder通讯机制》http://www.jianshu.com/p/1050ce12bc1eBinder系列第二篇:《能用【白话文】来分析Binder通讯机制?》http://www.jianshu.com/p/fe816777f2cfBinder系列第三篇:《Binder机制之一次响应的故事》http:...原创 2019-01-08 12:11:24 · 282 阅读 · 0 评论 -
从getSystemService()开始,开撸Binder通讯机制
Binder系列第一篇:《从getSystemService()开始,开撸Binder通讯机制》http://www.jianshu.com/p/1050ce12bc1eBinder系列第二篇:《能用【白话文】来分析Binder通讯机制?》http://www.jianshu.com/p/fe816777f2cfBinder系列第三篇:《Binder机制之一次响应的故事》http:...原创 2019-01-08 12:10:54 · 462 阅读 · 0 评论 -
听到ClassLoader一脸萌?那你应该看看这篇了,比你想的简单!
想要了解更多的我?请进入我的主页查看关于我的更多详细资料。参考资料参考资料;包括热修复;背景介绍Java程序是由一个个.class文件组成的,在程序执行阶段,JVM采用了动态加载的策略,当一个类被使用时,将由一个ClassLoad实例去加载这个.class文件。Java允许我们从外部加载一个类到内存中,然后使用它。有关ClassLoaderJava中ClassLoader的分类(...原创 2019-01-04 15:48:15 · 161 阅读 · 0 评论 -
其实用高大上的Hook技术动态注入代码很简单,一看就会!
背景介绍很多时候系统处于安全考虑,将很多东西对外隐藏,而有时我们偏偏又不得不去使用这些隐藏的东西。甚至,我们希望向系统中注入一些自己的代码,以提高程序的灵活性。刚好有这么一种特殊的回调模式,Hook模式可以实现上述愿景。Hook动态注入代码Hook机制是回调机制的一种,普通的回调是静态的,我们必须提前写好回调接口;而Hook机制在Java中则可以利用反射,针对切入点(通常是一个成员变量),...原创 2019-01-04 15:46:58 · 3592 阅读 · 2 评论 -
Android退出程序的两种方式:killProcess()和System.exit()
KillProcess()调用android.os.Process.killProcess(android.os.Process.myPid())可以杀死当前应用活动的进程,这一操作将会把所有该进程内的资源(包括线程全部清理掉)。当然,由于ActivityManager时刻监听着进程,一旦发现进程被非正常Kill,它将会试图去重启这个进程。这就是为什么,有时候当我们试图这样去结束掉应用时...原创 2019-01-04 15:46:09 · 1193 阅读 · 0 评论 -
Android——Intent简介
Intent简介本篇仅是个人学习笔记,内容为个人理解,如有错误还请提醒。Intent可以用来启动Activity(startActivity(Intent))、Serveice(startService(Intent))等组件,可以用来绑定Activity和Service以建立它们之间的通信(bindServiceConnaction(Intent,ServiceConnection,int)),可原创 2016-02-23 19:56:51 · 32870 阅读 · 3 评论 -
Android——单元测试(1)
参考1 参考2单元测试的必要性在Android开发中,我们常常需要把程序运行起来才能看到一些算法、请求数据或者是逻辑的效果,这样是很费时间的。但是在实际开发中,我们需要不断看到写出的代码是什么效果,如果完全通过运行来检查逻辑是否正确,那么可能有3/5的时间都是花费在等待编译运行上了。 如果我们在看法过程中针对一个逻辑进行单元测试,那么可以很快的看到这段代码逻辑的效果,从而节省大量的时间。在《Cl原创 2016-08-25 13:55:37 · 2657 阅读 · 0 评论 -
Android——网络连接状态管理ConnectivityManager
关键类ConnectivityManager是网络连接的管理器,当我们需要知道当前网络的状态时,就需要通过它来获得网络信息对象NetworkInfo,这个对象中包含了网络连接的信息,包括:是否有网,网络类型等信息。NetworkInfo的获取ConnectivityManager connManager = (ConnectivityManager)mContext.getSystemService原创 2016-05-15 22:28:57 · 3576 阅读 · 0 评论 -
Android——Exception异常的正确打开方式
背景介绍我们每天都需要与各种个样的异常打交到,但是我们对异常了解吗?对其处理方式正确吗?了解的话就算了,不了解的可以看看下面的内容。打开ExceptionException的分类先来看看下面这张图: 从图中可以看出: 1. Error(错误)和Exception(异常)都继承自Throwable类,我们重点关注Exception; 2. 异常类分为检查异常(直接继承自Exception,除原创 2016-11-10 15:04:46 · 9162 阅读 · 1 评论 -
Android之ClassLoader
参考资料参考资料; 包括热修复;背景介绍Java程序是由一个个.class文件组成的,在程序执行阶段,JVM采用了动态加载的策略,当一个类被使用时,将由一个ClassLoad实例去加载这个.class文件。Java允许我们从外部加载一个类到内存中,然后使用它。有关ClassLoaderJava中ClassLoader的分类(1) BootstarpClassLoad:启动类加载器,它负责在程序启动原创 2016-11-10 15:03:23 · 1495 阅读 · 0 评论 -
Android退出程序的两种方式:killProcess()和System.exit()
转载请注明出处哦!KillProcess()调用android.os.Process.killProcess(android.os.Process.myPid())可以杀死当前应用活动的进程,这一操作将会把所有该进程内的资源(包括线程全部清理掉)。当然,由于ActivityManager时刻监听着进程,一旦发现进程被非正常Kill,它将会试图去重启这个进程。 这就是为什么,有时候当我们试图这样去原创 2016-05-15 21:11:18 · 5125 阅读 · 0 评论 -
Android内存基础——Java内存管理机制
参考链接参考资料1背景介绍Java优势之一就是其具有垃圾回收机制。在大部分情况下,JVM的GC(垃圾回收器)能够帮助我们回那些不可到达的对象(就是未被引用的对象)。当然,在一些情况下,我们仍然需要自己去释放内存(就是把对象置null,把容器、数组清空),否则就会引起内存泄漏,内存泄漏严重时将容易引发OutOfMemoryError,详情见内存泄漏。此外,由于GC会停止所有的线程,包括UI线程,原创 2016-10-14 19:02:40 · 2076 阅读 · 0 评论 -
Android内存基础——内存泄漏
背景介绍内存泄漏一种情况是一块内存没有引用指向它,却没被回收,这种情况已经由Java虚拟机的GC帮助我们处理好了,见Java内存管理机制;另一种属于逻辑内存泄漏,即一个对象已经不再被使用了,但它仍然被另一个被使用中的对象所持有,导致该对象所占用的内存块不能被回收。少部分内存泄漏看不出有什么影响,但如果大量发生,将会明显减少可用内存,导致频繁GC,运行缓慢,严重时将容易引发OutOfMemoryErr原创 2016-10-14 19:03:55 · 2019 阅读 · 0 评论 -
Android——使用StackTraceElement实现自己的Log日志输出管理类
直接上代码,我们可以根据实际需求进行调整和补充。 关于StackTraceElement的介绍,在我的另外一篇文章中可以看到。package com.example.chenbing.animdvedemo.Utils;import java.util.Locale;import com.example.chenbing.animdvedemo.BuildConfig;import android原创 2016-08-25 14:05:23 · 3733 阅读 · 0 评论 -
Android——StackTraceElement线程运行栈的探索
介绍StackTraceElement[]中保存了一条线程中所有调用的方法。其中每个方法的信息包含在一个StackTraceElement对象中。获取StackTraceElement中的信息element.getClassName(); //获取类名element.getMethodLine(); //获取方法名element.getMethodName(); //获取方法名element.原创 2016-08-25 14:17:10 · 2772 阅读 · 0 评论 -
你真应该再多了解些Handler机制
背景介绍我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运行的背后,究竟隐藏了多少不为人知的秘密呢?线程间互通暗语,传递信息究竟是如何做到的呢?Looper、Handler、MessageQueue究竟在这背后进行了怎样的运作。本期,让我们一起从Thread开始,逐步探寻这个完美的线程链背后的秘密。 注意,大部分分析在代码中,所以请仔细关注代码哦!从Tread的原创 2017-08-24 10:19:56 · 446 阅读 · 0 评论 -
3分钟看懂Activity启动流程
背景介绍从事开发到了一定阶段,想要提高就必须搞明白系统的一些工作原理。为什么?因为只有明白了这些,你才能针对平台的特性写出优质的代码。当遇到棘手的问题时,你才能更快速的结合系统原理去寻找最优解决方案。底层基础决定上层建筑。这个原理在开发中同样适用。我是提倡 回归基础 的。高级的功能总是由最基本的元件构成,就好比为数不多的元素构成了我们难以想象的丰富的物质世界一样。只有掌握了最根本的内容,才能促使你爆原创 2017-06-20 10:33:19 · 1090 阅读 · 0 评论 -
用两张图告诉你,为什么你的App会卡顿?
有什么料?从这篇文章中你能获得这些料: - 知道setContentView()之后发生了什么? - 知道Android究竟是如何在屏幕上显示我们期望的画面的? - 对Android的视图架构有整体把握。 - 学会从根源处分析画面卡顿的原因。 - 掌握如何编写一个流畅的App的技巧。 - 从源码中学习Android的细想。 - 收获两张自制图,帮助你理解Android的视图架构。从se原创 2017-06-02 09:44:13 · 4120 阅读 · 5 评论 -
Android——Hook(钩子函数)动态注入代码
背景介绍很多时候系统处于安全考虑,将很多东西对外隐藏,而有时我们偏偏又不得不去使用这些隐藏的东西。甚至,我们希望向系统中注入一些自己的代码,以提高程序的灵活性。刚好有这么一种特殊的回调模式,Hook模式可以实现上述愿景。Hook动态注入代码Hook机制是回调机制的一种,普通的回调是静态的,我们必须提前写好回调接口;而Hook机制在Java中则可以利用反射,针对切入点(通常是一个成员变量),采用替换的原创 2016-11-10 15:01:03 · 11605 阅读 · 0 评论 -
Android——Context的理解
Context类的族谱 从图中可以看出,Activtiy、Service、Application的最基类都是Context。 产生途径 影响范围 Application创建时(当应用程序第一次启动时就会创建一个Application对象) 全局,属于程序级Context(这个Context环境是被所有组件所共有的。) BroadcastReceiver广播接收器.note 的o原创 2016-04-19 11:53:45 · 3010 阅读 · 0 评论 -
Android——Activity简介
绝大部分Activity是用于和用户交互的,Activity会创建一个交互窗口,可以通过调用setContentView(View)来放置一个布局在activity的窗口中。 通常是在PhoneWindow的DecorView中,显示UI会延迟大概300ms左右,在此之前,View还没有被填充,所以原创 2016-04-19 23:41:51 · 4209 阅读 · 0 评论 -
Android——线程管理之ExecutorService
在Java 5之后,ExecutorService类被引入,主要是为了方便线程的统一管理。ExecutorService的作用ExecutorService其实是一个线程池,它可以接收任务,然后根据配置来分配线程,并控制其调度。分类newCacheThreadPool这种线程池是无界线程池,即它可以创建任意条线程。每次创建新线程时,先检查自己的缓存池中有没有,没有才会创建。它有默认的TimeO原创 2016-05-15 20:22:28 · 3135 阅读 · 0 评论 -
Android——FragmentTabHost-快速实现底部导航模式的解决方案
FragmentTabHost联合Fragment可以方便的实现导航页面模式。 下面再代码中简介:activity.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orien原创 2016-05-23 12:23:25 · 2782 阅读 · 0 评论