2011-04-18 41 views
1

onCreate內的Activity內,我希望能夠檢測到在另一個應用程序(我也在撰寫)中Service是否可用並正在運行。 AIDL的問題是沒有同步選項。我希望我的活動實際上等待Service是否可用,如果不是,則採取相應措施。從Activity的onCreate檢測服務可用性

我想到的最好的答案是服務打開一個TCP套接字,併爲活動嘗試連接到它。如果成功,則活動的onCreate將知道該服務可用。然而,這完全是一個混亂。

因此,底線:我的活動的onCreate如何同步檢查外部Service是否可用,並在從onCreate例程返回之前採取措施?

回答

3

您可以循環播放由公共List<ActivityManager.RunningServiceInfo> getRunningServices (int maxNum)返回的列表。每個ActivityManager.RunningServiceInfo包含您需要的信息

檢查API herehere

ActivityMAnager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 
ArrayList<ActivityManager.RunningServiceInfo> rsiList = am.getRunningServices (999); 
boolean found = null; 
for (ActivityManager.RunningServiceInfo rsi: rsiList) { 
    if (rsi.service.getPackageName().equals("MYPACKAGE") { 
     found = true; 
     break; 
    } 
} 
if (found) { 
    // do whatever 
} else { 
    // alternative 
} 
相關問題