FengZH的博客

  • 首页

  • 标签

  • 分类

  • 归档

Android中的IPC方式(一)

发表于 2019-06-17 | 分类于 Android

使用Bundle

四大组件中的三大组件(Activity、Service、BoardcastReceiver)都支持在Intent中传递Bundle数据。Bundle实现了Parcelable接口,可以很方便地在不同进程间传输。

我们可以在Bundle附加要传输给其他进程的信息并通过Intent发送给其他进程。注意的是传输的数据必须是可以被序列化的,例如基本类型、实现了Serializable或Parcelable接口的对象以及一些Android支持的特殊对象。

阅读全文 »

二叉树的中序遍历(递归和非递归)

发表于 2019-06-15 | 分类于 算法

何为中序遍历

中序是相对于根节点来说的,当遍历一棵二叉树时,先遍历根节点的左子树,中间遍历根节点,最后遍历根节点的右子树。以此类推,遍历子树时也是中序遍历。

阅读全文 »

用AIDL来分析Binder的工作机制

发表于 2019-06-10 | 分类于 Android

AIDL是什么

  • Android Interface Definition Language,即Android接口定义语言。
  • 使用aidl可以帮助我们发布以及调用远程服务,实现跨进程通信。
  • 我们提供AIDL文件,可以方便系统为我们生成对应的接口(里面有Binder类)
阅读全文 »

Android IPC机制基础知识

发表于 2019-06-10 | 分类于 Android

Android IPC简介

IPC的含义

IPC是Inter-Process Communication的缩写,翻译过来是进程间通信的意思,指至少两个进程或线程间传送数据或信号的一些技术或方法(安卓一般是指两个进程之间进行数据交换的过程)。

阅读全文 »

源码分析:广播的动态注册、发送和接收过程

发表于 2019-06-06 | 分类于 Android

动态注册过程

ContextWrapper#registerReceiver(以下代码基于API26)

动态注册的过程从ContextWrapper的registerReceiver方法开始

1
2
3
4
5
@Override
public Intent registerReceiver(
BroadcastReceiver receiver, IntentFilter filter) {
return mBase.registerReceiver(receiver, filter);
}

和Activity、Service一样,ContextWrapper没有做任何操作,而是把任务交给了ContextImpl(mBase的实现类型是ContextImpl)来完成。接着看ContextImpl的registerReceiver方法。

阅读全文 »

利用递归和回溯解决LeetCode第77题:组合(Java实现)

发表于 2019-06-05 | 分类于 算法

题目

给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。

阅读全文 »

HashMap源码分析(JDK1.7)

发表于 2019-06-02 | 更新于 2019-06-07 | 分类于 Java

前言

和分析JDK1.8的HashMap源码一样,本文也是通过构造方法、增删改查等基本操作来分析JDK1.7的源码。

阅读全文 »

初步了解红黑树

发表于 2019-05-30 | 更新于 2019-06-02 | 分类于 数据结构

简介

红黑树是一种自平衡的二叉查找树。和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。它查找、插入和删除的时间复杂度为O(logn),这里的n是树中元素的数目。

阅读全文 »

LeetCode第56题:合并区间

发表于 2019-05-27 | 分类于 算法

题目

给出一个区间的集合,请合并所有重叠的区间。

示例

示例1:

1
2
3
输入: [[1,3],[2,6],[8,10],[15,18]]
输出: [[1,6],[8,10],[15,18]]
解释: 区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].

阅读全文 »

源码分析:Service的绑定过程(bindService)

发表于 2019-05-24 | 分类于 Android

ContextWrapper#bindService(除特殊说明外,以下代码都基于API25)

和Service的启动过程一样,Service的绑定过程也是从ContextWrapper开始的,mBase同样是ContextImpl类型的对象,所以真正调用的是ContextImpl的bindService方法。

1
2
3
4
5
@Override
public boolean bindService(Intent service, ServiceConnection conn,
int flags) {
return mBase.bindService(service, conn, flags);
}

阅读全文 »
1…567…9
FengZH

FengZH

阳光总在风雨后!坚持就是胜利!
82 日志
6 分类
33 标签
GitHub E-Mail
© 2019 – 2020 FengZH
|
0%