Android进程二

一、IPC通信设定
1、AndroidManifest.xml文件
  一个App可以占用多个进程
  <service android:name=".MyService"
  android:process=":remote">// 独立一个进程取名remote(远程)
  Android每个进程都有一个VM

二、IBinder接口
1、使用Java Interface定义的接口,用于跨进程调用
  Android框架的IPC沟通依赖单一的IBinder接口,客户端调用IBinder接口的transact(业务)函数,透过IPC机制而调用远程的onTransact函数
2、Android源码中,Java层的IBinder接口定义于IBinder.java代码的文档里
  public interface IBinder{
  // code编码 Parcel(包裹)传出的数据 返回的数据
    public boolean transact(int code, Parcel data, Parcel replay, int flags) throws RemoteException
  }
3、IBinder两个实现类
  Binder和BinderProxy

  IBinder ---> BinderProxy(代理)
  ------------------------IPC机制
  IBinder ---> Binder
4、基本流程
  Client端BinderProxy
    |
  java ---> transact()(JNI本地模块的transact()函数) ---> Binder Driver驱动服务
                               |
     --------------------------Linux转址-----------------
    |
  Service端Binder

  <-- init()调用java -->
  c/c++ ---> execTransact() ---> onTransact() ---> IOC(实现类实现onTransact())

时间: 2024-10-14 02:17:11

Android进程二的相关文章

android 进程/线程管理(四)续----消息机制的思考(自定义消息机制)

继续分析handler 和looper 先看看handler的 public void dispatchMessage(Message msg) { if (msg.callback != null) { handleCallback(msg); } else { if (mCallback != null) { if (mCallback.handleMessage(msg)) { return; } } handleMessage(msg); } } 所以消息的处理分层三种,就是 1.传入一

Android进阶笔记04:Android进程间通讯之Messenger ( 区别于AIDL)

一. Android进程间通讯之Messenger 的引入 (1)引言:      平时一说进程间通讯,大家都会想到AIDL,其实messenger和AIDL作用一样,都可以进行进程间通讯.它是基于消息的进程间通信,就像子线程和UI线程发送消息那样,是不是很简单,还不用去写AIDL文件,是不是有点小爽.哈哈.此外,还支持记录客户端对象的Messenger,然后可以实现一对多的通信:甚至作为一个转接处,任意两个进程都能通过服务端进行通信. (2) Messenger 与 AIDL 比较:    

Android 进程保活招式大全

目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题.本文对 Android 进程拉活进行一个总结. Android 进程拉活包括两个层面: A. 提供进程优先级,降低进程被杀死的概率 B. 在进程被杀死后,进行拉活 本文下面就从这两个方面做一下总结. 1. 进程的优先级 Android 系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存. 为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进

Android进程注入

全部代码在这里下载:http://download.csdn.net/detail/a345017062/8133239 里面有两个exe.inj是一个C层进程注入的样例.inj_dalvik是我写的Java注入.C层的进程注入借直接拉的洗大师的开源项目(https://code.google.com/p/libandroidinjector/) Android的基础服务大部分都是使用Java写的,仅仅是C层的注入,想要直接訪问的话还是比較麻烦.所以须要在远端载入一个dex包(代码中写死了载入/

android 进程/线程管理(一)----消息机制的框架

一:android 进程和线程 进程是程序运行的一个实例.android通过4大主件,弱化了进程的概念,尤其是在app层面,基本不需要关系进程间的通信等问题. 但是程序的本质没有变,尤其是多任务系统,以事件为驱动的软件系统基本模式都是如下: 程序的入口一般是main: 1.初始化: 比如创建窗口,申请资源等. 2.进入while(true) 在循环中处理各种事件,直到进程退出. 四大组件是进程的部分载体,配置进程在androidmanifest.xml里面,android:process 属性.

理解Android进程创建流程(转)

/frameworks/base/core/java/com/android/internal/os/ - ZygoteInit.java - ZygoteConnection.java - RuntimeInit.java - Zygote.java /frameworks/base/core/java/android/os/Process.java /frameworks/base/core/jni/com_android_internal_os_Zygote.cpp /frameworks

Android进程保活-自“裁”或者耍流氓

本篇文章是后台杀死系列的最后一篇,主要探讨一下进程的保活,Android本身设计的时候是非常善良的,它希望进程在不可见或者其他一些场景下APP要懂得主动释放,可是Android低估了"贪婪",尤其是很多国产APP,只希望索取来提高自己的性能,不管其他APP或者系统的死活,导致了很严重的资源浪费,这也是Android被iOS诟病的最大原因.本文的保活手段也分两种:遵纪守法的进程保活与流氓手段换来的进程保活. 声明:坚决反对流氓手段实现进程保活 坚决反对流氓进程保活 坚决反对流氓进程保活

Android进程整理

一.概括 系统启动架构图: 上图在Android系统-开篇中有讲解,是从Android系统启动的角度来分析,本文是从进程/线程的视角来分析该问题. 1.1 父进程 在所有进程中,以父进程的姿态存在的进程(即图中的浅红色项),如下: kthreadd进程: 是所有内核进程的父进程 init进程 : 是所有用户进程的父进程(或者父父进程) zygote进程 : 是所有上层Java进程的父进程,另外zygote的父进程是init进程. 1.2 重量级进程 在Android进程中,有3个非常重要的进程(

【Android】一种提高Android进程存活率新方法

[Android]一种提高Android进程存活率新方法 SkySeraph Jun. 19st 2016 Email:[email protected] 更多精彩请直接访问个人站点:www.skyseraph.com 一.基础知识 1.Android 进程优先级 1.1 进程优先级等级一般分法:- Activte process- Visible Process- Service process- Background process- Empty process 1.2 进程优先级号 Pro