我建立了一個Android啓動爲我公司廣告牌,暴露象下面這樣AIDL服務:Android檢查後臺服務可用性?
interface IBillboardAPI {
String onAppStart(String mediaKey, String session);
String onAppSleep(String mediaKey, String session);
String getAppCampaignsList(String mediaKey, String session);
String getAppCampaign(String mediaKey, String session, long campaignId);
byte[] downloadCampaignMaterial(String url);
}
而且我還內置了Java的lib中,將整合所有遊戲(使用這個庫之上)與我們的Android啓動器如果遊戲安裝在我們的廣告牌。
我可以通過我的lib連接遊戲和AIDL服務,使用下面的代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.info(">>> ON CREATE...");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
Log.info(">>> CONNECTED...");
billboardAPI = IBillboardAPI.Stub.asInterface(iBinder);
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
billboardAPI = null;
Log.info(">>> DISCONNECTED...");
}
};
if (billboardAPI == null) {
Log.info(">>> CONNECTING TO SERVICE...");
Intent i = new Intent();
i.setAction("service.BILLBOARD_API");
bindService(i, connection, Service.BIND_AUTO_CREATE);
}
}
因爲遊戲不僅會在我們廣告牌,而且在用戶的移動安裝.. 。我想知道,
如何連接我們的廣告牌AIDL服務,因爲遊戲沒有安裝在我們的廣告牌,但用戶的手機上面的連接代碼時,我可以讓我的lib扔一個事件?
ServiceConnection似乎沒有可用的方法來通知活動它正試圖連接的服務不可用。
謝謝。
請注意,從[Android 5.0](https://developer.android.com/about/versions/android-5.0-changes.html#BindService)開始,綁定到服務**必須使用明確的'意圖「 - 僅僅使用一個動作將會失敗,並帶有」IllegalArgumentException「。 – ianhanniballake