基於安全上的考量,Android的每個AP都會跑在自己的process上,不同的process是無法直接溝通的,必須要透過Android所提供的某些機制 (Intent, Binder) 才能達到溝通的訊息。
因此,Android提供了一種IPC的實作方式AIDL來達到讓兩個不同process也能相互溝通的目的。實作的方法很簡單,以下提供一個簡單的範例,另外AIDL有些要注意的地方,這邊也提出來跟大家分享。
實作範例
1. 定義 aidl 檔案
| Application | Activity | Service | ContentProvider | BroadcastReceiver | |
|---|---|---|---|---|---|
| Show a Dialog | NO | YES | NO | NO | NO |
| Start an Activity | NO1 | YES | NO1 | NO1 | NO1 |
| Layout Inflation | NO2 | YES | NO2 | NO2 | NO2 |
| Start a Service | YES | YES | YES | YES | YES |
| Bind to a Service | YES | YES | YES | YES | NO |
| Send a Broadcast | YES | YES | YES | YES | YES |
| Register BroadcastReceiver | YES | YES | YES | YES | NO3 |
| Load Resource Values | YES | YES | YES | YES | YES |
inflater.inflate(R.layout.my_layout, null);android:name = "android.permission.SYSTEM_ALERT_WINDOW"