Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器 软件资源

软件开发小程序制作系统集成与运维空间租用硬件开发视频监控技术咨询与支持——联系电话:0311-88999002/88999003

首页 / 操作系统 / Linux

从AIDL开始谈Android进程间Binder通信机制

从AIDL开始谈Android进程间Binder通信机制

本文首先概述了Android的进程间通信的Binder机制,然后结合一个AIDL的例子,对Binder机制进行了解析。概述我们知道,在Android app中的众多activity,service等组件可以运行在同一进程中,也可以运行在不同进程中。当组件运行在同一进程中进行通信就显得比较简单,在之前的Android线程间通信机制中已经讲过了;而当它们运行在不同的进程中时,就需要使用我们本文中所要介绍的Binder机制了。Binder作为一种进程间通信机制,...
Android线程间异步通信机制源码分析

Android线程间异步通信机制源码分析

本文首先从整体架构分析了Android整个线程间消息传递机制,然后从源码角度介绍了各个组件的作用和完成的任务。文中并未对基础概念进行介绍,关于threadLacal和垃圾回收等等机制请自行研究。基础架构首先,我们需要从整体架构上了解一下Android线程通信都做了哪些工作。我们都知道,进程是操作系统分配资源的最小单位,一个进程中可以启动多个线程来执行任务,这些线程可以共享进程的资源但不分配资源,这里讲的资源主要是只内存资源。Android的线程间消息传递机...
从Android源码分析View绘制

从Android源码分析View绘制

在开发过程中,我们常常会来自定义View。它是用户交互组件的基本组成部分,负责展示图像和处理事件,通常被当做自定义组件的基类继承。那么今天就通过源码来仔细分析一下View是如何被创建以及在绘制过程中发生了什么。创建首先,View公有的构造函数的重载形式就有四种:View(Context context) 通过代码创建view时使用此构造函数,通过context参数,可以获取到需要的主题,资源等等。View(Context context, Attribu...
Android View事件传递

Android View事件传递

在Android中,人们主要通过手指与系统交互。Android把所有的touch事件都被封装成MotionEvent来进行处理,其中包括了手指点击的位置,时间等信息。其事件类型主要包括:ACTION_DOWN,ACTION_UP,ACTION_MOVE, ACTION_POINTER_DOWN, ACTION_POINTER_UP,ACTION_CANCEL。这些事件是有触发顺序的,下面举两个栗子:只有一个手指点击在view范围内,依次触发的事件:手指按下...
7 个去伪存真的 JavaScript 面试题

7 个去伪存真的 JavaScript 面试题

这次我要说的是如何淘汰那些滥竽充数的JavaScript程序员。你会惊讶于居然有这么多人来面试工作,并且他们的简历描述得都貌似很牛逼的样子。但是如果你问他们相关问题的话,你就会发现他们对此一无所知。我不知道他们这些简历是真的还是只是一个噱头。所以和其他面试官一样,我也有我的一套方法首先确保面试的人是值得我去面试的——我可以在半小时内通过电话搞定。javascript-2因此,如果有些你认为应该有的问题却不在我的7个问题中,那可能是因...
JavaScript中为什么string可以拥有方法?

JavaScript中为什么string可以拥有方法?

引子我们都知道,JavaScript数据类型分两大类,基本类型(或者称原始类型)和引用类型。基本类型的值是保存在栈内存中的简单数据段,它们是按值访问的。JS中有五种基本类型:Undefined、Null、Boolean、Number和String。引用类型的值是保存在堆内存中的对象,它的值是按引用访问的。引用类型主要有Object、Array、Function、RegExp、Date。对象是拥有属性和方法的,所以我们看到下面这段代码一点也不奇怪.var f...
Java获取class/jar包路径

Java获取class/jar包路径

在Java平台,偶尔会遇到因为Class的冲突而报错方法不存在之类的问题,但是编译的时候又没有问题。在同一个环境下进行编译和运行,一般不会出现这种情况;在一个环境下编译,但是在另一个环境下运行,比如集成环境升级,可能会遇到这种问题。原因可能是集成环境的jar环境和开发环境的不一致,比如多了或少了些jar,正是导致冲突的源头。 设想如果在报错的地方,可能获取该类的路径或者所在jar包的路径,就可以定位到这个class文件,并确认是不是我们编译的时候所用到的...
Java基于数据源的数据库访问

Java基于数据源的数据库访问

概述最早接触的Java访问数据库,是通过jdbc接口。后来工作之后,一般是在服务器(如weblogic)配置数据源,通过JNDI使用数据源;最近需要在程序中动态构造数据源,查了些资料,备录于此。体系结构我暂时没有系统的学习过UML,对各种图的规范画法不了解。所以上面的图仅供参考,不保证其合乎规范。对于上图,需要说明:组件之间的依赖关系,从上至下;即上面的组件依赖于下面的。spring-jdbc和commons-dbcp分别是对应jar包的名称;忽略了版本号...
C语言的预处理命令

C语言的预处理命令

C语言编译器处理时经过的第一个步骤是预处理,就是从.c文件处理为.i文件。在预处理时编译器做了一些展开替换的处理。 1>头文件展开,即将#include "stdio.h"类似的文件展开。 2>宏定义的替换工作,即将程序中的宏定义内容替换好。#include"stdio.h"#define R 10int main(){ int a = R;} 经过预处理之后代码变为//...stdio.h里的内容未展示//宏定义的地方已经替换到程序中...
C++复制构造函数

C++复制构造函数

在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):1) 一个对象作为函数参数,以值传递的方式传入函数体;2) 一个对象作为函数返回值,以值传递的方式从函数返回;3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化);1.对象以值传递的方式传入函数参数:class CExample {private:int a;public://构造函数CExample(int b){ a = b; cout<...
Python中常见的数据类型总结

Python中常见的数据类型总结

Python提供多种数据类型来存放数据项集合,主要包括序列(列表list和元组tuple),映射(如字典dict),集合(set),下面对这几种一一介绍:一 序列1.列表list列表是一种有序的集合,相对于元组和字符串的不同是它其中的元素可变,可以随时添加和删除其中的元素。(1) 创建list在命令行中测试,如下:>>> L1 = [1,2,3]>>> L1[1, 2, 3]>>> L2 = ["abc...
Bash的命令替换

Bash的命令替换

命令替换:将命令替换为命令的输出,所有的shell支持使用反引号的方法进行命令替换。Bash支持两种形式:$(command) 和`command`命令替换是可以嵌套的,如果使用反引号的形式,在内部反引用前必须使用反斜线转义。例子:$echo $(pwd)或$echo `pwd`命令替换嵌套$echo `basename `pwd``或$echo $(basename $(pwd)) //嵌套更方便本文永久更新链接地址:http://www.linuxid...
<< 3751 3752 3753 3754 3755 3756 3757 3758 3759 3760 >>