Kanghanbin's Blog

If someone is doomed to win, then why not me.


  • 首页

  • 标签

  • 归档

  • 关于

  • 搜索

Android Handler 的工作原理解析

发表于 2019-09-16
本文字数: 61k | 阅读时长 ≈ 56 分钟
前言提到Handler大家应该都不会陌生,它是安卓中消息机制的主要核心类,配合MessageQueue和Looper一起使用构成了我们所熟悉的Android消息机制。Handler的主要工作是将一个任务切换到指定的线程去执行,因为Android中规定访问UI只能在主线程中进行,如果在子线程中访问UI,会抛出异常。而Android中不建议在主线程执行耗时操作否则会造成ANR,所以说。系统提供Handler的主要原因是为了解决在子线程中无法访问UI的问题。本文深入分析 Android 的消息处理机制,了解 Handler 的工作原理。Handler创建一个handler的构造方法很多,不过最终都会 ...
阅读全文 »

Android中IPC机制之Messenger

发表于 2019-08-20
本文字数: 20k | 阅读时长 ≈ 18 分钟
前言Messenger翻译为“信使”,顾名思义,可以在不同进程中传递Message对象。Messenger是一种轻量级IPC方案,底层实现也是AIDL,只是对AIDL做了封装。Messenger的使用相对于AIDL方便多,因为Messenger是Android系统中自带的类,服务端和客户端都不用创建AIDL文件。Messenger会持有一个Handler,这个Handler用于处理接受到的信息,在服务端和客户端通过Messenger实现双方通信。构造方法 public Messenger(Handler target) { mTarget = target.getIMessen ...
阅读全文 »

序列化与反序列化之Serializable和Parcelable

发表于 2019-08-13
本文字数: 33k | 阅读时长 ≈ 30 分钟
面试场景Android 开发中对两个 Activity 之前传递数据,应该很熟悉吧?嗯,当然没问题。一般采用 Intent.putXXX() 就可以实现各种轻量级数据的传递。那对于自定义的 Object 呢?直接使用 Bundle.putSerializable() 即可。需要把对象实现 Serializable 接口,最后使用 Intent.putExtras(Bundle) 把数据放进 Intent 即可。除了这种方式,还有其它方式吗?和这种方式有什么区别呢?我知道还有 Bundle.putParcelable() ,不过我们平时基本都只用 Serializable 方式。为什么不用 Pa ...
阅读全文 »

Activity的生命周期和启动模式

发表于 2019-08-09
本文字数: 9.6k | 阅读时长 ≈ 9 分钟
activity的生命周期正常情况下activity的生命周期如下图所示:整个生命周期,onCreate 和onDestroy,onStart和onStop,onResume和onPause都是一一配对的。问题当前Activity为A,用户打开新的ActivityB,B的onResume和A的onPause方法那个先执行?当启动一个新的activity是,旧的activity的onPause会先执行,然后启动新的activity。具体执行流程:A.onPause——B.oncCreate——B.onStart——B.onResume——A.onStop。异常情况下activity生命周期act ...
阅读全文 »

RxPermissions源码解析

发表于 2019-08-01
本文字数: 72k | 阅读时长 ≈ 1:05
前言AndroidM(6.0)开始,系统增加了运行时动态权限,目的在于保护用户隐私,防止一些敏感的危险权限在应用安装时被随意获取,用户可以清晰地选择是否允许app某项权限,就算没有给予某个权限,也不影响其他功能的使用,不至于令用户无法安装。以下权限都被列为危险权限,即需要运行时动态获取的权限。身体传感器 日历 摄像头 通讯录 地理位置 麦克风 电话 短信 存储空间 原始使用方法第一步是先判断当前是否已经获取到该权限了;第 2 步申请对应的权限;第 3 步在 Activity 或者 Fragment 中处理获取权限的结果。具体的实现步骤如下:step 1:判断权限是否已经获取。 // Here, ...
阅读全文 »

方舟编译器的引发的学习惨案

发表于 2019-07-31
本文字数: 3.2k | 阅读时长 ≈ 3 分钟
昨天公司给了部p30,开机体验了下,确实不错。运存8g+内存128g+cpu麒麟980搭载EMUI9.1,重点是华为公布的方舟编译器。并向业界开源改工程,于是赶紧上网学习了下关于Android ART JVM的知识,也可以给别人吹吹牛逼方舟编译器到底干了个啥。简介方舟编译器可供开发者在开发环境一次性的将高级语言编译为机器码,手机安装应用程序后可全速运行程序,带来效率上的极大提升。根据华为实验室的测试数据,EMUI 9.1在仅仅对系统组件System Server应用了华为方舟编译器后,就带来了系统操作流畅度提升24%,系统响应性能提升44%。官方公布在8月份会开源.安卓编译器的发展做安卓开发三 ...
阅读全文 »

Java中的LinkedList的方法的应用

发表于 2019-07-17
本文字数: 52k | 阅读时长 ≈ 47 分钟
introduceLinkedList其实也就是我们在数据结构中的链表,这种数据结构有这样的特性:分配内存空间不是必须是连续的;插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1);访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n);在Java中,LinkedList提供了丰富的方法,可以模拟链式队列,链式堆栈等数据结构,为用户带来了极大的方便,下面看看这些方法的用法:addboolean add(E e):在链表后添加一个元素,如果成功,返回true,否则返回false;void addFirst(E e):在链表头部插入一个元素;addLast(E e):在链表尾部 ...
阅读全文 »

kotlin Coroutines in Android App

发表于 2019-06-27
本文字数: 29k | 阅读时长 ≈ 26 分钟
What are Coroutines?拆开Coroutines 这个单词来看 Coroutines = Co + Routines 在这里,Co意味着合作,而Routines意味着功能。这意味着当函数相互合作时,我们将其称为协同程序Introduction可以将coroutine视为轻量级线程。与线程一样,协同程序可以并行运行,彼此等待并进行通信。协同程序的最大优点是非常便宜,几乎是免费的:我们可以创建数千个协同程序,并且在性能方面支付很少。另一方面,真正的线程开始并保持昂贵。一千个线程对于现代机器来说可能是一个严峻的挑战。launch {}不会阻塞一个线程,而只是挂起协同程序本身。当协程正 ...
阅读全文 »

第一个Flutter应用之Helloworld

发表于 2019-06-17
本文字数: 74k | 阅读时长 ≈ 1:07
背景Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高质量的原生用户界面。 Flutter可以与现有的代码一起工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并且Flutter是完全免费、开源的。1.0版本于2018年12月5日(北京时间)发布。安装环境和配置1.获取 Flutter SDK下载下面的安装包以获取最新版本 stable 的 Flutter SDKflutter_windows_v1.5.4-hotfix.2-stable.zip要查看其他发行通道和以往的版本,请参阅SDK 归档页面。将压缩包解压,然后把其中的 flutter 目录整个放 ...
阅读全文 »

带你初识kotlin(五)

发表于 2019-06-03
本文字数: 54k | 阅读时长 ≈ 49 分钟
介绍集合是大多数编程语言的常见概念通常包含相同类型的一些(数目也可以为零)对象。集合中的对象称为元素或条目。集合类型Kotlin标准库提供了基本集合类型的实现:集合,列表和映射。 一对接口代表每种集合类型:A read-only interface that provides operations for accessing collection elements.A mutable interface that extends the corresponding read-only interface with write operations: adding, removing, and ...
阅读全文 »
1234…7
康汉斌

康汉斌

间歇性混吃等死,持续性踌躇满志

61 日志
22 标签
GitHub Csdn
0%
© 2015 – 2021 康汉斌 | 站点总字数: 524k | 站点阅读时长 ≈ 7:57