Android AIDL實現(xiàn)跨進程通信的示例代碼
AIDL是Android接口定義語言,它可以用于讓某個Service與多個應用程序組件之間進行跨進程通信,從而可以實現(xiàn)多個應用程序共享同一個Service的功能。
實現(xiàn)步驟
例:用 A程序去訪問 B程序的MyService.java服務
- 在B中建立AIDL文件MyAidlService.AIDL,在AIDL文件里寫我們的接口方法
- 在MyService中寫AIDL文件定義的方法的具體服務邏輯
- 在B的manifest文件中,為Service添加action “com.xyb.servicetest.MyAidlService” 用于A靜態(tài)來訪問Service(這里是因為,如果用動態(tài)Intent (this, MyService.class), 在A中沒有MyService這個類)
- 把B的AIDL文件夾拷貝到A中,一定要注意包的路徑依然為B中的路徑
- 在A中利用靜態(tài)Intent來啟動B的服務MyService
對應步驟詳細代碼:
MyAidlService.AIDL
interface MyAidlService { int add(int a, int b); }
MyService.Java
public class MyService extends Service{ MyAidlService.Stub mBinder = new MyAidlService.Stub() { @Override public int add(int a, int b) throws RemoteException { return a + b; } }; @Override public IBinder onBind(Intent intent) { return mBinder; } @Override public void onCreate() { super.onCreate(); } @Override public void onDestroy() { super.onDestroy(); } @Override public int onStartCommand(Intent intent, int flags, int startId) { return super.onStartCommand(intent, flags, startId); } }
3.添加action
<service android:name=".MyService"> <intent-filter> <action android:name="com.xyb.servicetest.MyAidlService"/> </intent-filter> </service>
4.拷貝AIDL文件夾
5.A訪問B的服務
Intent intent = new Intent("com.xyb.servicetest.MyAidlService"); bindService(intent, connection, BIND_AUTO_CREATE);
private MyAidlService aidlService;
private ServiceConnection connection = new ServiceConnection() { @Override public void onServiceConnected(ComponentName name, IBinder service) { Log.d("onServiceConnected", "onServiceConnected"); aidlService = (MyAidlService) MyAidlService.Stub.asInterface(service); try { int sum = aidlService.add(10, 50);//對10和50相加 Log.d("onServiceConnected", sum + ""); } catch (RemoteException e) { e.printStackTrace(); } } @Override public void onServiceDisconnected(ComponentName name) { } };
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
VerticalBannerView仿淘寶頭條實現(xiàn)垂直輪播廣告
這篇文章主要為大家詳細介紹了VerticalBannerView仿淘寶頭條實現(xiàn)垂直輪播廣告,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08Android RecyclerView實現(xiàn)下拉刷新和上拉加載
這篇文章主要介紹了Android RecyclerView實現(xiàn)下拉刷新和上拉加載的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-05-05java從輸入流中獲取數(shù)據(jù)并返回字節(jié)數(shù)組示例
這篇文章主要介紹了java從輸入流中獲取數(shù)據(jù)并以字節(jié)數(shù)組返回,這是一個常用的方法,以后可以直接拿來用。這種輸入流可以來自Android本地,也可以來自網(wǎng)絡2014-01-01Android音視頻開發(fā)之MediaPlayer使用教程
Android多媒體框架支持播放提供了MediaPlayerAPI,可以通過MediaPlayer來實現(xiàn)媒體文件播放。可以說MediaPlayer是非常方便使用的多媒體播放器。本文將詳細講解MediaPlayer的使用,需要的可以參考一下2022-04-04