android binder 进程间通信机制2_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > android binder 进程间通信机制2

android binder 进程间通信机制2

 2014/10/22 15:30:22  Binder进程间通信库实现原理  程序员俱乐部  我要评论(0)
  • 摘要:1.Service组件使用模板类BnInterface描述,称为Binder本地对象,对应于Binder驱动程序中的Binder实体对象实现原理图如下:当一个Binder代理对象通过Binder驱动程序向Binder本地对象发出一个进程间通信请求时,Binder会调用该本地对象的transact函数来处理请求。对于每一个Binder线程,其内部都有一个IPCThreadState对象,调用它的transact函数和Binder驱动程序交互。2.Clent组件使用模板类BpInterface描述
  • 标签:android

1.Service组件

使用模板类BnInterface描述,称为Binder本地对象,对应于Binder驱动程序中的Binder实体对象

实现原理图如下:

JSUvLUU0899dRTTz/99NNPP71ixYoVK1aUlpaWlpb+q9MzzzzzzDPPPPvss88++2xZWVlZWdlzzz333HPPPf/8888///wLL7zwwgsvrOz04osvvvjii6tWrVq1atVLL7300ksvrV69evXq1S+//PLLL7/8yiuvvPLKK692Ki8vLy8vf+2111577bXXX3/99ddff+ONN9544401a9asWbNm7dq1a9euffPNN9988823OlVUVFRUVLz99ttvv/32unXr1q1b984777zzzjvr169fv379hg0bNmzY8L+dNm7cuHHjxsrKysrKynfffffdd99977333nvvvffff//999+vqqqqqqra1OmDDz744IMPPvzwww8//LC6urq6uvqjjz766KOPPv74448//njz5s2bN2+uqampqan5d6dPPvnkk08+2bJly5YtW2pra2traz/99NNPP/30s88+++yzzz7//PPPP/+8rtPWrVu3bt26bdu2bdu2ffHFF1988cX27du3b9/+5Zdffvnllzt27NixY8fOTrt27dq1a9dXX3311Vdfff31119//fXu3bt3795dX19fX1//zTfffPPNN99+++233377XaeGhoaGhobvv//++++//+GHH3744Ycff/zxxx9/bGxsbGxs/Omnn3766aefO+3Zs2fPnj1NTU1NTU179+7du3fvL7/88ssvv+zbt2/fvn3Nzc3Nzc2/dmppaWlpadm/f//+/ftbW1tbW1sPHDhw4MCBgwcPHjx4sK2tra2tze12u93uQ53a29vb29s7Ojo6OjqC/JRG8NrwwxDdjTJlvOZHyY+GZNoi2RAZTlquwF647OzBSfeIrntx1/+c0S2jvdDmHm0e6pqWtFlKm7G02UubybRZTZvhWjppk582F2rzojZHavOlNnfu6aRNq9osq8242uyrzcTarKzN0F0TtjZ/a3O5Nq9rc7w232tz/65O2rJAWyVoKwZt9aCtJLRVxdZO2oJDW39oaxFtXaKtUbT1irZ26VrKaCsbbZWjrXi01Y+2EtJWRR900hZM2vpJW0tp6yptjaWttzZ20pZi2spMW6VpKzZt9aat5LRVXdciT1vzaes/bS2orQu1NaK2XizvpC0ltZWltsrUVpza6lNbib7YSVukamtWbf2qrWW1da22xtXWu13LX201rK2MtVWytmLWVs/aSnp5J2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KKLVu2qA4HAAJDSgMA8JDSwOPx7Nu37/777x8wYMD48ePfffdd1eEAgCzdP/cJAIhOovkiYjMT1Dpw4MBjjz12zDHHnH766a+//rrqcADAmOrZEwBgIaL5ImIzE6zg0KFDZWVlQ4cOHTp0aFlZ2aFDh1RHBAAAAASFlCZKvfHGG6effvoxxxzz6KOPHjhwQHU4AAAAgEmkNFHt3XffnTBhwoABA+6///59+/apDgcAAAAIGCkNPFu2bLniiivi4+NvvfXWH3/8UXU4AAAAQABIafD/27lz51//+tc+ffpcf/31X3/9tepwAAAAACmkNPgP33///bx58/r27XvVVVd99tlnqsMBAAAADJDSQMfevXvvueeexMTE7OzsTZs2qQ4HAAAA8IuUBn7t37//4YcfTk5OPuuss9566y3V4QAAAAA6SGlgwO12l5aWDhky5NRTT125cmV7e7vqiAAAAID/Q0oDKR0dHa+++uppp5127LHHLl++/ODBg6ojAgAAADweUhoEasOGDeeee25SUtIDDzzw66+/qg4HAAAA0Y6UBmZs3rx50qRJ/fr1W7BgwU8//aQ6HAAAAEQvUhqY98UXX1xzzTV9+vSZPXt2fX296nAAAAAQjUhpEKxvv/32xhtv7NOnz1/+8pdt27apDgcAAADRhZQGobFnz54777yzf//+EydO/Oijj1SHAwAAgGhBSoNQamlpeeihh4444ogxY8a88847qsMBAACA85HSIPTa2tpKSkrS0tJGjBixevXqjo4O1REBAADAsUhpEC4dHR2rVq0aPnz44MGDn376abfbrToiAAAAOBApDcLu7bffPuecc4466qilS5fu379fdTgAAABwFFIaRMiHH354ySWXJCQk3HXXXU1NTarDAQAAgEOQ0iCi6urqcnNz+/bte9NNN3333XeqwwEAAIDtkdJAgd27d99www19+vSZPn36l19+qTocAAAA2BgpDZRpbGy8/fbb+/XrN3ny5H//+9+qwwEAAIAtkdJAsebm5sWLFw8cOPC8887buHGj6nAAAABgM6Q0sISDBw8WFxenpqaOGjWqvLycr7IBAACAJFIaWEh7e/vzzz9/8sknn3jiic8888yhQ4dURwQAAACrI6WBFa1du/bMM88cNGjQI4880traqjocAAAAWBcpDazr/fffv/DCCw8//PB77733l19+UR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" alt="" />

当一个Binder代理对象通过Binder驱动程序向Binder本地对象发出一个进程间通信请求时,Binder会调用该本地对象的transact函数来处理请求。

对于每一个Binder线程,其内部都有一个IPCThreadState对象,调用它的transact函数和Binder驱动程序交互。

2.Clent组件

使用模板类BpInterface描述,称为Binder代理对象,对应于Binder驱动程序中的Binder引用对象。

实现原理图如下:

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NGrUyNfXt1WrVlOnTj148KDoXAAAGAMVkZdwYKEnupoiZL5qXLt27aWXXqpTp87ff/8tOosA165dW7Vq1f1/erRUqVKvvPLKokWLzp8/LzoXAADyoiLyEg4s9ERXU4T8V40vvvgiICBgwYIFooOI9M8//3zxxRcdOnQoWrRo7dq1R4wYsXHjRrt/yxcAADOjIvISDiz0RFdThCGuGgcPHqxRo0aPHj3S09NFZxEsOzs7ISFh3Lhx4eHhvr6+LVq0mDJlyoEDB3JyckRHAwBAPCoiL+HAQk90NUUY5apx69atPn36VK1add++faKzyOL69etr1qwZMGBAlSpVSpYs2b1796+//jo1NVV0LgAAhHH+nxBHAYj+eGEWdDVFGOuqsXTp0oCAgOnTp4sOIp3k5OQ5c+ZERUUVK1bsiSeeeOuttzZs2HD79m3RuQAA0JXoWkxxoj9emAVdTRGGu2r8888/9evXb9eu3eXLl0VnkdG9e/d2794dGxvbpEkTX1/fiIiIjz76KDExkSdsAQCQyosvvvivf/2rffv2ooMA0jFYfQJHDFdq5ubm3r17d/jw4eXLl9++fbvoLFJLT09fu3btoEGDqlWrVqJEiZdffnn+/Plnz54VnQsAALNbv359lSpVHnjggSpVqqxfv150HEAuxqtPYJcRS8371q9fX6pUqXHjxt27d090FgM4derUl19+2alTp+LFiz/++ONvvvnmjz/+eOvWLdG5AAAwnczMzODg4HXr1j300EP3a05T/SviQL6MWp/AinFLzdzc3HPnzjVv3rxZs2Z8U+e8e/fu7dmz54MPPnj66ad9fX2bN28+ceLEP/74gydsAQDQR2xsbPv27TMzMx9++OHc3Nz27dtPmDBBdChAIgauT2DJ0KVmbm7uvXv3JkyYEBgY+P3334vOYjw3b978/vvvBw8eXL169YCAgC5dusybNy8lJUV0LgAAlHXy5El/f/+TJ0/evn37v//9r+US0dEAWRi7PkEeo5ea9+3cubNChQrDhg27c+eO6CxGlZKSMm/evC5duvj7+1evXn3IkCHff//9zZs3RecCAEApkZGR97/DvHnz5mOPPXZ/4YQJE/j7QEAeFeoT5KpSaubm5l65ciUyMjI0NPT48eOisxhbTk7OH3/8MXHixGeeecbX17dZs2YffPDBnj17+H9iAQBwk+X/mXnjxg1fX9/7yzMzM/n7QEAeReoTKFNq3jdjxoyAgIDFixeLDqKIW7du/fjjj0OHDn388ceLFy/eqVOnL7/88tSpU6JzAQBgPPf/GlBePXnt2rXChQvnvcrfBwLyKFWfmJlipWZubu7+/furVavWq1cv/ryqZ509ezY+Pv7ll18uUaJEtWrVBg0atHbt2vT0dNG5AAAwhvt/DSjv1ytXrhQtWtRyBf4+EHCfavWJaalXaubm5t68eTM6Orp69eoHDhwQnUVBOTk5iYmJH3300bPPPuvr69u0adPY2Njdu3fzhC0AAI7cunWrfPnyln/75/Lly8WKFbNc5+TJk+XLl799+7bu6QC5KFifmJOSpeZ9ixYtCggImDlzpuggKrt9+/aGDRuGDRv2xBNPFCtWLCoqas6cOfwNPQAAbFnVkGlpaf7+/trrAOakbH1iNgqXmrm5uceOHatXr16HDh2uXr0qOov6zp07t2DBgu7du5csWbJKlSoDBgz47rvvrl+/LjoXAAAyunDhQokSJUSnAGSkcn0ikI8J6HxI79y5M2TIkKCgoF27dum8a9PKycnZv3//lClTWrRo4evrGx4ePm7cuISEhOzsbNHRAACQRWpqamBgoOgUgIwoNb1CdBmoByEHdt26dSVLlvzwww/5/wl1lpGRsXHjxuHDh9euXbto0aIdOnT44osvTpw4IToXAACCnT17tnTp0qJTADKi1PQKgcWYDsS27syZM02bNo2IiEhNTRWVweTOnz+/cOHCV155pVSpUpUrV+7fv//q1auvXbsmOhcAAAKkpKSULVtWdApARsqWQ2JRanpVdnZ2TExMqVKlNmzYIDAGcnNz//zzz6lTp7Zq1crX17dRo0YxMTG//vorT9gCAMzj1KlT5cuXF50CkJGy5ZBYwosxr5Kkddu2bStXrtzIkSOzsrJEZ0FuZmbm5s2bR44cWbdu3SJFikRGRs6cOfP48eOicwEA4F0nT56sUKGC6BSAjMQXDEqSpBjzEnlad+nSpbZt2zZo0CA5OVl0FvyfCxcufPPNN9HR0aVLl65YseLrr7/+7bff8teDAQBKOnHiRMWKFUWnAGQkRcGgHnmKMW+QrXXTpk0rUaLE8uXLRQeBHX/99de0adOee+45Pz+/sLCw9957b8eOHXwRDQBQxvHjxytXriw6BSAjiQoGlchWjHmWhK37448/qlSp0rdvX/7FZGnduXNny5Yto0aNqlevXuHChdu1azdjxoxjx46JzgUAgFuOHTtWpUoV0SkAGclVMChDwmLMg+Rs3Y0bN7p161azZs2//vpLdBbkIy0tbcmSJb169SpbtmyFChVee+21FStWXLlyRXQuAABcdvTo0WrVqolOAchIuoJBDXIWY55FFd4AACAASURBVJ4ic+vi4+MDAgLmzJkjOgicdfjw4enTpz///PN+fn7169cfM2bML7/8cvfuXdG5AABwyuHDh6tXry46BSAjSQsGo3OmGMtbJ9+VXa3rfP4fl97l6va9tHH3HT16tHbt2p07d75+/broLHDBnTt3tm3b9u6774aGhhYuXPiFF1747LPPjh49KjoXAABa/vrrr8cff1x0CkBG8hYMhubBUtPVuk6HOlDyUjM3NzczM3PAgAGVKlXavXu36CwoiEuXLi1btqx3797ly5cvX7587969ly1bdunSJdG5AACwdvDgwZo1a4pOAchI6oLBuApWajr6wXJr2kucWd+lhQVunQxWrVpVsmTJKVOm5OTkiM6Cgjt69GhcXNwLL7xQuHDh0NDQd999d+vWrXfu3BGdCwCA3Nzc3AMHDtSqVUt0CkBGBigYjMidUtNR2enoZ7sVY97PGrtzZi8Fbp0kTp061bhx49atW1+8eFF0Frjr7t2727dvHzNmTP369f38/J5//vlPP/308OHDonMBAEwtMTGxTp06olMAMjJGwWA47pSajl51ZgW7u7b6utJuNlVLzdzc3Ozs7NGjR5cpU2bz5s2is8Bjrly5smLFitdeey0oKKhs2bKvvvrqkiVL0tLSROcCAJjOH3/8Ua9ePdEpABkZpmAwFq+Wmtqlo6NfnSk1rbbsTutks3nz5jJlyowePTorK0t0FnjYsWPHPv/88xdffLFIkSL16tUbNWrUzz//nJmZKToXAMAU9uzZExoaKjoFICODFQxG4dVSU3tfjtZ3ptT0YOskdPHixdatWzdu3PjUqVOis8ArsrKydu7c+d5774WFhfn5+T333HOffPIJ/84qAMCrdu/eXb9+fdEpABkZr2AwBB1KTWe+1XR+g/kWtK62Tk45OTlTpkwpUaLEqlWrRGeBd129evXbb799/fXXK1WqVLp06Z49e37zzTcXLlwQnQsAoJqEhISwsDDRKQAZGbJgkJ8HS027P2tUhnZ/tfsWjTXdb53Mdu/eXalSpQEDBvCMpUkcP3585syZ7du3L1KkSJ06dUaOHLlp0yY+fQCAR/z666+NGjUSnQKQkYELBpkZvRjTpkDrrl+/3rlz59q1ax89elR0FugnOzt7165d77//fqNGjXx9fVu1avXxxx//+eefonMBAAxs586djRs3Fp0CkJGxCwZpKVCMaVCmdXPnzg0ICIiPjxcdBAJcu3Zt9erV/fv3Dw4OLlWqVI8ePRYuXHj+/HnRuQAABrN9+/YmTZqITgHISIWCQULKFGN2qdS6Q4cO1axZs1u3bjdu3BCdBcKcOHHiiy++6NixY9GiRWvVqjV8+PCNGzdmZGSIzgUAMIBt27Y9/fTTolMAMlKkYJCNSsWYLcVad/v27b59+wYHB+/du1d0FgiWnZ2dkJAwfvz48PBwX1/fFi1aTJ48ef/+/Tk5OaKjAQAktWXLlmeeeUZ0CkBG6hQMUlGsGLOiZOuWL19eokSJadOmiQ4CWdy4ceO7774bMGBA1apVS5Ys2a1btwULFpw7d050LgCAXDZv3vzss8+KTgHISLWCQRJKFmN5VG1dcnJygwYN2rZte+nSJdFZIJeTJ0/OmTPnpZdeKlasWM2aNYcNG7Zhw4bbt2+LzgUAEG/jxo0tWrQQnQKQkYIFgwx8TED0MfaKrKyskSNHlitXbtu2baKzQEb37t3bvXv3hAkTmjZt6uvr++yzz3700Uf79u3jCVsAMK0NGza0atVKdApARmoWDMIpXIzlqt663Nzcn376qVSpUjExMdnZ2aKzQF7p6enr1q0bNGhQSEhIiRIlunbtGh8ff+bMGdG5AAC6Wr9+fevWrUWnAGSkcsEgkNrFmNqtuy81NTUiIqJp06ZUDnDG6dOnv/zyy86dO/v7+9eoUWPo0KE//vjjrVu3ROcCAHjdDz/80KZNG9EpABkpXjCIonYxpnbr8uTk5Hz44YclS5Zcu3at6CwwjHv37u3Zs+fDDz9s1qyZr6/vM888M3HixL179/KELQCoat26dW3bthWdApCR+gWDEGoXY2q3zsquXbuCgoKGDBly584d0VlgMDdv3vzhhx+GDBlSvXp1f3//Ll26fPXVVykpKaJzAQA86bvvvmvXrp3oFICMzFIw6EztYkzt1tm6evVqhw4d6tWrd+zYMdFZYFQpKSnz5s3r2rVrQEBASEjI4MGDv//++/T0dNG5AADuWr16dWRkpOgUgIxMVDDoSe1iTO3WOTJz5syAgICFCxeKDgJjy8nJ+eOPPyZNmtS8eXNfX9+nn376gw8++P333+/duyc6GgCgIL799tsOHTqITgHIyHQFgz7ULsbUbp2GAwcOVK9evWfPnjdv3hSdBSq4devW+vXr33zzzccff7x48eKdOnWaO3fuqVOnROcCALhgxYoVUVFRolMAMjJjwaADz/3rlfISfYzFuHXrVq9evapVq7Z//37RWaCUs2fPzp8//+WXXy5RokS1atUGDhy4du3aGzduiM4FAMjHsmXLOnXqJDoFICOTFgzepnYxpnbrnLF48eKAgIAZM2aIDgIF5eTkJCYmTp48OSIiwtfXt0mTJrGxsb/99htP2AKAnJYuXdq5c2fRKQAZmbpg8B61izG1W+ek48ePh4aGRkZGXrlyRXQWKOv27ds//fTTW2+99cQTTxQrViwqKmr27NnJycmicwEA/s/ixYu7du0qOgUgI7MXDF6idjGmduucd+fOnWHDhlWoUGHnzp2is0B9qampX3/9dffu3QMDA6tUqfLGG2+sWbPm+vXronMBgNktWrSoW7duolMAMqJg8Aq1izG1W+eqH374ITAwcMKECTzfCN0cOHBgypQpLVu29PX1bdy48bhx43bt2pWdnS06FwCY0ddff92jRw/RKQAZUTB4hdrFmNqtK4CzZ882a9asefPm586dE50F5pKRkbFp06YRI0bUrl27aNGiHTp0mDVr1j///CM6FwCYyPz583v27Ck6BSAjCgavULsYU7t1BXPv3r3x48eXKlVq/fr1orPApM6fP79o0aJXXnmlVKlSlStX7tev36pVq65duyY6FwAobt68ea+++qroFICMKBi8Qu1iTO3WuWP79u3ly5cfPnz43bt3RWeBqR08eHDq1KmtW7f29fVt2LBhTEzMzp07s7KyROcCAAV9+eWXvXv3Fp0CkBEFg1eoXYyp3To3Xb58uV27dk899RQPMUIGmZmZmzdvfvvtt+vWrVukSJHIyMjPP/88KSlJdC4AUMfcuXP79OkjOgUgIwoGr1C7GFO7dR4xffr0gICApUuXig4C/J+LFy8uXrw4Ojq6TJkyFStW7Nu378qVK/nXegDATbNnz+7bt6/oFICMKBi8wscERB9j2e3bt69q1ap9+vS5deuW6CyAtUOHDk2bNq1NmzZ+fn4NGjQYO3bsjh07eMIWAApg1qxZ/fr1E50CkBEFg1foX/gVLlxY5z2KPsYGkJ6e3qNHjxo1ahw8eFB0FsC+O3fubNmy5Z133nnyyScLFy7crl27uLi4v//+W3QuADCMzz///I033hCdApARBYMioqOjfXx8IiMjRQeBtQULFgQEBHzxxReigwD5SEtLW7p0aa9evcqVK1ehQoU+ffosX7788uXLonMBgNTi4uIGDhwoOgUgI0pNFWzdujU0NDQlJaVQoUIJCQmi48Da33//Xbdu3aioKP7lCRjFkSNHpk+f3rZtWz8/v6eeemr06NG//PILf1oZAGxNnz598ODBolMAMqLUNLysrKyQkJDExMTc3NyYmJjw8HDRiWBHZmbmoEGDKlasyL0AGMvdu3e3bds2evTop556ys/Pr23btp999tmRI0dE5wIAWUybNm3o0KGiUwAyotQ0vFGjRg0fPvz+z+np6YGBgStWrBAbCY589913JUuWnDRpUk5OjugsgMsuX768fPnyPn36VKhQoVy5cr169Vq6dOmlS5dE5wIAkT755JM333xTdApARpSaxpaYmBgSEpKenp63JC4uLiQkhL8kKa2UlJQmTZq0bNny/PnzorMABff333/HxcW1a9eucOHCTz755DvvvLN169Y7d+6IzgUAevv444/feust0SkAGVFqGlt4ePimTZssl2RlZQUHB8+dO1dUJOQrOzt77NixpUuX3rhxo+gsgLvu3r27ffv2sWPHNmjQwM/Pr02bNp9++umhQ4dE5wIAnUyePHnEiBGiUwAyotQ0sLi4uOjoaNvlq1evDgwMtPyqExLasmVL2bJlR40axVfQUMaVK1dWrlzZt2/foKCgMmXKvPrqq4sXL7548aLoXP9H538UyoNEHzkADk2aNOntt98WnQKQEaOXUSUnJwcHB6ekpNh9NSwsLCYmRt9EcFlaWlqbNm0aNmx48uRJ0VkAD0tKSvr8888jIyOLFClSt27dt99+++eff87MzBSbSnTBWHBijxsADR9++OE777wjOgUgI0Yvo2rbtm18fLyjV3fs2FGoUKHU1FQdE6EgcnJypk6dWqJEiZUrV4rOAnhFVlbWzp07Y2JiGjZs6Ovr27p1608++eTgwYNCwhixbDNiZsBUJkyYMHr0aNEpABkxehnS6tWr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" alt="" />

上一篇: 看图听声音 下一篇: iCarouselDemo
发表评论
用户名: 匿名