Android 判斷某Activity是否在前臺/棧頂
//之前做一個倒計時自動退出回到主介面的功能,發現不知道是否執行緒安全問題(本人對這個不是很懂),會出現重複執行的操作.
//後面想到在頁面上面做一個判斷,判斷當前頁面是否處於棧頂/也就是前臺.是的話才執行操作,這樣就能避免重複執行的問題了.
//好,下面是程式碼.
public class GetTask {
/**
* 判斷某個介面是否在前臺
* @param context
* 上下文
* @param className
* 某個介面名稱
*/
public boolean isForeground(Context context, String className) {
if (context == null || TextUtils.isEmpty(className)) {
return false;
}
//ActivityManager的功能是與系統中所有執行著的Activity互動提供了介面
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> list = am.getRunningTasks(1);
if (list != null && list.size() > 0) {
ComponentName cpn = list.get(0).topActivity;
if (className.equals(cpn.getClassName())) {
return true;
}
}
return false;
}
}
//呼叫時;只需直接例項化這個類,然後呼叫方法就行了
GetTask tt = new GetTask();
if (tt.isForeground(當前Activity.this, "包名+當前Activity")) {
Go(); //寫需要執行的操作
}
//如果有更好的方式,請大神指點.或者導致重複執行的原因是什麼,也請大神指點.