2010-02-16 92 views
1

是否有可能以某種方式聽取ActivityManager的事件,例如,活動何時開始? ActivityManager是否發送廣播?我沒有發現任何跡象表明它確實如此。收聽ActivityManager事件?

我基本上需要做的事情:我希望我的應用程序在啓動/關注某個(第三方)應用程序時啓動我的一項活動。問題是在第三方應用程序實際顯示之前需要發生這種情況。

我至今嘗試過的解決方法:

  1. logcat的輸出:我查詢logcat的每0.8秒(過濾,只顯示ActivityManager事件),但這個吃了很多ressources
  2. getRunningTasks:減慢手機也很多,並不是很安全,因爲一項活動可能正在運行,但目前沒有關注

任何想法?

+0

您可以評論爲什麼您的應用程序需要在某些第三方應用程序之前啓動嗎? – dparnas 2010-02-17 09:39:12

+0

我的應用在用戶被允許啓動第三方應用之前要求輸入密碼。 – ChristianS 2010-02-17 09:55:26

回答

0

我想沒有實際其它傳統方式來處理glabal系統狀態,只有

(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE); 

ActivityManager.getRecentTasks() - 返回當前正在運行的任務列表,其中最近的是第一以及之後的舊版。

詳細檢查docs

也許雖然Android是一個Linux可以運行的系統工具,如

Runtime.getRuntime().exec("ps -aux | grep smth") 

但我認爲這將是很難檢測特定的Java應用程序。