1. 程式人生 > >Android 判斷某Activity是否在前臺/棧頂

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();    //寫需要執行的操作

        } 

//如果有更好的方式,請大神指點.或者導致重複執行的原因是什麼,也請大神指點.