基於安全上的考量,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"