2013-03-06 138 views
0

有2個Android應用程序:App1Process1Service1App2Process2Service2同步和互斥

還有一個應用程序AppManager,它只是一個獨立的服務,稱爲ManagerServiceManagerService基本上做兩件事情:

  1. 寄存器聽衆使用手機
  2. 這些監聽器的幫助下獲取數據的傳感器。 注意:獲取數據可能需要一些時間。現在

,具有限定AIDL,我可以ManagerService結合Service1並用ManagerService結合Service2Service1Service2現在都可以調用遠程方法A(...)來請求在ManagerService中定義的已註冊偵聽器,然後從ManagerService中獲取保存在列表中的共享傳感器數據。

如果現在Service1被執行遠程方法A(...)ManagerService獲得傳感器數據,例如:

List A(...) { 
    // ... 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
      0, 0, locationListener); 
    // ... 
    return list; 
} 

private final LocationListener locationListener = new LocationListener() { 

    public void onLocationChanged(Location location) { 
     SaveLocationToList(location); 
    } 
} 

我究竟如何保證Service2將僅請求只Service1後,傳感器數據讀取已經完成在「request-registration-updateList-getList」過程之上?

+0

這看起來過於複雜。爲什麼這三個獨立的應用程序,如果它們如此相互依賴? – CommonsWare 2013-03-06 01:31:42

+0

3種不同的應用程序。 – NickMan 2013-03-12 10:42:20

+0

大家好,感謝您爲我編輯和格式化這篇文章...:D我已經在這裏發佈了我的方式。 – NickMan 2013-03-12 10:53:02

回答

0
List A(...) 
{ 
    // ... 
    synchronized(this) 
    { 
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 
      0, 0, locationListener); 
    // ... 
    return list; 
    } 
}