2010年2月6日 星期六

Checking who is at foreground

有時候背景的Receiver或service會希望知道目前跑在前景的Activity是什麼來決定它要做的事(應用?會有碰到這種的時候的)

要達成這目的就得透過ActivityManager.getRunningTasks 來達成了

ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);

if(tasks.size()>1) {
Log.d("TEST", "Top activity is " + tasks.get(0).topActivity);
}

因為這method回傳的結果會照時間排序, 所以第一個一定是最新的一個, 由於我們只需要知道目前foreground activity是誰, 因此我們只需要取一個