2015-06-18 57 views
0

我有一系列的Android應用程序,我需要協調他們的執行。在任何給定的設備上,可以安裝這些應用程序中的任何一個,或者安裝其中任何兩個應用程序,或者其中任意三個,或者任何四個,等等。所有這些應用程序都可以做一件特定的事情,他們都會不時嘗試做這件事。現在問題就出現了:在任何時候,最多隻允許其中一個應用程序執行此操作。如果任何一個應用程序正在做這件事,其他應用程序都不應該這樣做;他們應該等待輪到他們,或者乾脆通過。換句話說,我需要Android上的全局互斥或關鍵部分機制。另外,如果可能,我想避免NDK。我該怎麼辦?Android全球互斥?

回答

2

您可能需要詳細一點才能得到更具體的答案。但根據我的理解,聽起來你可以在每個應用程序中使用BroadcastReceiver來監聽一個動作以獲得廣播,並將其作爲需要等待或取消動作的標誌。然後在每個應用程序內部,每當你要開始你的動作時,你都會用`com.your.packagename.ACTION_STARTING_THE_THING'這個動作字符串來廣播一個意圖。所有安裝的其他應用程序(如果有的話)都會收到此意圖,並可以對其進行相應處理。

+0

恐怕你的回答不太對,但無論如何感謝。不正確的原因是,如果我的兩個應用試圖在大致相同的時間執行「那件事」,他們都會發送廣播,並一起直接進入關鍵部分。如果他們中的任何一個在完成該事情之前收到廣播,它可能能夠取消該動作,回滾並假裝沒有發生任何事情,但更可能是太晚了。 – ycsun

+0

我知道我的問題有點過於籠統,但我想知道在Android上是否存在針對此全局互斥問題的通用解決方案,就像它在其他一些平臺上一樣。 – ycsun