0
正如How to return hashmap in an aidl file線程討論,我返回「地圖」,並沒有泛型映射像「地圖」或類似一個HashMap地圖的實現。當我檢查綁定的服務端輸出時,我會在地圖中獲取所需的鍵值,即地圖填充正確。但在服務端相同的功能,從客戶端調用時,會返回一個空的地圖,因爲我初始化我的地圖服務如:的Android AIDL:返回地圖工作在服務的水平,但在休息客戶端級別
Map myMap = new HashMap();
請注意,客戶服務合同是良好的服務有一些其他返回布爾值的方法,其中一些是無效的。他們都正常工作。問題是這個方法返回一個Map,我想我正在做一些語法錯誤。
下面是執行我的服務端:
public Map getStatus() {
List<MyObject> MyList = new ArrayList<>();
if (myDaggerInjectedObject != null) {
MyList = myDaggerInjectedObject.getMyList();
}
Map myMap = new HashMap();
for (MyObject myObject : MyList) {
myMap.put(myObject.getScannableId(), myObject.getStatus().name());
}
return myMap;
}
下面是調用上面綁定的服務方法,我的客戶端代碼:
public Map getStatus() throws RemoteException {
try {
Map status = myService.getStatus();
// the status object is set to blank hashmap, it should have some data i.e key-value pair
return status;
} catch (RemoteException e) {
Log.e(TAG, "Service connection not available");
throw e;
}
}
有人可以幫指出的錯誤嗎?
應該,如果'MyList'不是空的,是嗎?試圖'Log.d'是'MyList'的大小? – pskink
已驗證,MyList不爲空。當直接從服務應用程序端調用服務方法時,正確的填充地圖會返回,只有從客戶端應用程序調用時纔會出現問題。 –
然後進行測試只需調用'myMap.put( 「鍵」, 「值」);',然後再試一次 – pskink