Android系统提供的跨进程通讯机制,这篇文章开始会从Linux相关的基础概念知识开始介绍,从基础概念知识中引出Binder机制,归纳Binder机制与Linux系统的跨进程机制的优缺点,接着分析Binder...进程隔离保证了每个进程的内存安全,但是在大多数情形下,不同进程间的数据通讯是不可避免的,因此操作系统必须提供跨进程通信机制 二、用户空间和内核空间 用户空间:表示进程运行在一个特定的操作模式中,没有接触物理内存或设备的权限...3 Binder通信模型 首先在理解模型之前先熟悉这几个概念: Client进程:跨进程通讯的客户端(运行在某个进程) Server进程:跨进程通讯的服务端(运行在某个进程) Binder驱动:跨进程通讯的介质...方法,通过Binder驱动去请求ServiceManager来找到Service端真正对象,然后调用Service端的add方法 5 Binder对象和Binder驱动 Binder对象:Binder机制中进行进程间通讯的对象...,对于Service端为Binder本地对象,对于Client端为Binder代理对象 Binder驱动:Binder机制中进行进程间通讯的介质,Binder驱动会对具有跨进程传递能力的对象做特殊处理,
Socket通讯 前言 正文 一、创建项目 二、构建主页面布局 三、服务端 四、客户端 五、业务交互 ① 接口回调 ② 服务端和客户端切换 ③ 服务开启和关闭 ④ 服务连接和断开 ⑤ 发送消息 ⑥ 显示消息内容...六、UI优化 ① 列表适配器 ② 修改页面逻辑 七、源码 前言 Socket通讯在很多地方都会用到,Android上同样不例外,Socket不是一种协议,而是一个编程调用接口(API),属于传输层...因为涉及到网络通讯,所以需要在AndroidManifest.xml配置网络权限。...Socket通讯,发送和接收对应的是输入流和输入流,通过socket.getInputStream()得到输入流,获取字节数据然后转成String,通过接口回调,最后重置变量。...六、UI优化 既然现在消息通讯已经可以了,那么我们可不可以做成类似聊天的UI风格呢?当然可以。
Notification 作为 Android 重要的用户界面组成部分,它有自己的设计指南。在 Android 5.0(Api level 21) 中引入的 Material Design 尤为重要。...由于 Notification.Builder 仅支持 Android 4.1及之后的版本,为了解决兼容性问题, Google 在 Android Support v4 中加入了 NotificationCompat.Builder...Android Support v13:这个包的设计是为了android 3.2及更高版本的,一般我们都不常用,平板开发中能用到。 Notification 中的元素。...在 Android N(24) 中, Google 对 Notification 的 UI 进行了修改。下图是 Android M 和 Android N 的对比。 ?...具体可看源码 //添加默认震动效果,需要申请震动权限 //android:name="android.permission.VIBRATE" /> Notification.DEFAULT_VIBRATE
不知道大家国庆节过的咋样,有没有学习呢?我是闲着没事就写点东西,本文篇幅较短,只是实现了心跳消息的处理,下面进入正文。
arg0) { System.out.println("====service onBind"); return new MyBinder(); } /** * @see android.app.Service...GET_UPGRADE_INFORMATION_COMPLETE; mHandler.sendMessage(msg); } } } /* (non-Javadoc) * @see android.app.Service
下面来看一个具体的例子,有助于更好的理解广播机制是怎么一回事。 UI部分就不说了,Activity上就加了一个按钮,点击后发送广播。接收器接收到广播后在终端输出一句话。...> android="http://schemas.android.com/apk/res/android" package="com.gufengxiachen.broadcast..." android:versionCode="1" android:versionName="1.0"> android...:name="android.intent.action.MAIN" /> android:name="android.intent.category.LAUNCHER...; import android.content.IntentFilter; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener
NestedScrolling机制现在在App的作用越来越重要,许多很漂亮的交互都是基于NestedScrolling机制进行完成的。...NestedScrolling机制主要是能够让父View和子View在滚动时互相协调配合。...父类继承NestedScrollingParent接口,而子类继承NestedScrollingChild接口,同时让父类包含子类,而不是自接父子关系,就搭起了NestedScrollingParent机制的基本骨架.../apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"...android:gravity="center" android:textColor="@android:color/white" android:background
1.多进程模式 使用多进程只有一种方法——给四大组件指定android:process 在多进程模式中,不同进程会拥有独立的虚拟机,Application和内存空间 2.IPC基础概念 Serializable...Parcelable是Android中的序列化方式,效率高,推荐使用 3.IPC方式 (1)使用Bundle (2)使用文件共享,比如SharedPreference(会有并发读写的问题) (3
一、整体了解 Handler是Android中一个重要的组件,它主要负责接收和处理消息,实现线程间的通信。 主要在两种场景下使用: 1.跨线程通信。...Android消息机制主要涉及几个类 Handler。消息处理者,负责发送和处理消息。 Message。消息的主体,包含消息的具体内容和类型。 MessageQueue。...消息机制运行流程大概如下 应用进程启动后,默认Looper是创建好的。...利用平时我们比较熟悉的快递理解Android消息机制 在看源码之前我们先需要了解下 1.ActivityThread,涉及到Looper什么时候开始工作的 2.ThreadLocal,涉及到为什么一个进程...消息机制如上,这种机制在我们生活中也存在,比如快递处理中心 来看看哈,进程启动创建Looper,执行loop方法,每个进程相当于一个城市,一个城市有很多片区相当于线程,每个线程只能有一个Looper相当于每个片区只有一个菜鸟中心
:name=".mService" android:enabled="true" android:exported="true">...android:name="android.intent.category.DEFAULT"/> android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"...android:id="@+id/mLyContainer" android:layout_width="match_parent" android:layout_height="match_parent...<Button android:id="@+id/button1" android:layout_width="wrap_content" android
TaskGroupContainer: TaskGroup执行器,负责执行一组Task的工作单元,类似Yarn中的TaskTracker(Yarn中的JobTracker和Yarn中的TaskTracker通过RPC进行通讯
二、Android休眠 休眠是内核的核心工作,而Android是基于Linux内核的,所以Android休眠和内核有着千丝万缕的联系;由于Android的特殊应用场景:移动设备,所以Android休眠和内核又有着特别的需求...的特别需求: 比如对于自己的电脑,不用让它休眠好了;但是对于我们形影不离的手机,在休眠的时候还要睁一只眼:来电了要通知你,QQ啊微信啊什么的由信息了也要通知你,所以Android在Linux内核休眠机制之上.../sys/power/autosleep:从Android wakelocks补丁集中演化而来,用于取代Android wakelocks中的自动休眠功能。...在Android wakelocks时代,写wake_lock获取锁,写wake_unlock释放锁;在AutoSleep时代,具体参见【Android休眠】之AutoSleep wakeup_count...Android从4.4开始使用autosleep机制,只要不存在任何active的唤醒源(wakeup_source)了,就进入休眠模式。 5、系统Power Manager整体流程:
二、Android休眠 休眠是内核的核心工作,而Android是基于Linux内核的,所以Android休眠和内核有着千丝万缕的联系;由于Android的特殊应用场景:移动设备,所以Android休眠和内核又有着特别的需求...的特别需求: 比如对于自己的电脑,不用让它休眠好了;但是对于我们形影不离的手机,在休眠的时候还要睁一只眼:来电了要通知你,QQ啊微信啊什么的由信息了也要通知你,所以Android在Linux内核休眠机制之上.../sys/power/autosleep:从Android wakelocks补丁集中演化而来,用于取代Android wakelocks中的自动休眠功能。...在Android wakelocks时代,写wake_lock获取锁,写wake_unlock释放锁;在AutoSleep时代,具体参见【Android休眠】之AutoSleep wakeup_count...Android从4.4开始使用autosleep机制,只要不存在任何active的唤醒源(wakeup_source)了,就进入休眠模式。 5、系统Power Manager整体流程
简介:Handler是一套在 Android开发中 进行异步消息传递的机制 为什么要用Handler: 因为屏幕的刷新频率是60Hz,大概16毫秒会刷新一次,所以为了保证UI的流畅性,耗时操作需要在子线程中处理...Android中的UI控件不是线程安全的,因此在多线程并发访问UI的时候会导致UI控件处于不可预期的状态。...Google不通过锁的机制来处理这个问题是因为: 1、引入锁会导致UI的操作变得复杂 2、引入锁会导致UI的运行效率降低 因此,Google的工程师最后是通过单线程的模型来操作UI,开发者只需要通过...概述一下Android中的消息机制? Android中的消息机制主要是指Handler的运行机制。Handler是进行线程切换的关键,在主线程和子线程之间切换只是一种比较特殊的使用情景而已。...其中消息传递机制需要了解的东西有Message、Handler、Looper、Looper里面的MessageQueue对象。
搞基三剑客 开发者日常接触最多的可能是 Handler,而支撑 Handler 运行机制的实际上还有 MessageQueue 和 Looper 这两个好基友。...nextPollTimeoutMillis = 0; } } Looper 字面意思,循环者,在 Android 的消息机制中扮演的是消息循环的角色。...prepare( ) 方法 初学 Android 的时候我们经常会写这样的一段代码,如下: new Thread() { @Override public void run() { Looper.prepare
com.tsh.internetpic; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.app.Activity...; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import...android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.view.View...; import android.widget.EditText; import android.widget.ImageView; import android.widget.Toast; public
此外,在JNI应用中,Java代码与Native代 码运行于同一个进程空间内;对于跨进程甚至跨宿主环境的Java与Native间通信的需求,可以考虑采用socket、Web Service等IPC通信机制来实现...JNI是连接android Java部分和C/C++部分的纽带,完整使用JNI需要Java代码和C/C++代码。...jnitest.java package com.hello.jnitest; import android.app.Activity; import android.os.Bundle...= NULL); if (register_android_test_hello(env) < 0) { printf("register_android_test_hello...另外,也有可能直接使用eclipse启动android虚拟机时出现上述错误且使用#adb remount也出现的情况,此时需要手动启动android虚拟机,如:#emulator -avd xxx -partition-size
这个过程一般会产生如下几个事件: 点击(Down)事件 移动(Move)事件 松手(Up)事件 Android为我们封装好了一个触摸事件类MotionEvent,上述的三个过程分别对应着MotionEvent...Android界面简析 在具体讲诉前,我们先来了解下的android的界面架构。如果说手机是一个学校,那么手机中的每一个APP(应用)都是学校里的一道道独特风景,正是它们,构成了学校的魅力。...DecorView将要显示的具体内容呈现在了PhoneWindow上,这里面的所有View的监听事件(点击、滑动等操作)都通过一个名为WindowManagerService来进行接收(具体可看深入理解android...Ref Mastering the Android Touch System Android群英传 …
摘要 Binder是android中一个很重要且很复杂的概念,它在系统的整体运作中发挥着极其重要的作用,不过本文并不打算从深层次分析Binder机制,有两点原因:1是目前网上已经有2篇很好的文章了,2...是对Binder机制进行深入底层乃至驱动的分析这一过程相当困难且相当耗时,因此并不适合重复造轮子。...本文的角度是对Android的Binder机制从整体和概念上进行分析,能够让大家很快明白到底什么是Binder,Binder是干什么的,Binder和应用开发的关系是什么,总之,这篇文章还是很值得去看一看的...可靠的身份标记只有由IPC机制本身在内核中添加。其次传统IPC访问接入点是开放的,无法建立私有通道。...基于以上原因,Android需要建立一套新的IPC机制来满足系统对通信方式,传输性能和安全性的要求,这就是Binder。
领取专属 10元无门槛券
手把手带您无忧上云