欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android應用程序轉到后臺并回到前臺判斷方法

 更新時間:2016年11月15日 17:02:16   作者:tigergang  
這篇文章主要介紹了Android應用程序轉到后臺并回到前臺判斷方法的相關資料,需要的朋友可以參考下

我們知道,當我們按返回或Home鍵退出應用程序的界面時,應用程序會在后臺被掛起。這么設計的好處是,由于應用被系統(tǒng)緩存在內存中,那么在用戶打開啟動應用時就可以通過調用緩存,快速啟動應用。當然,由于當今內存和處理器能力的限制,系統(tǒng)會自動關閉一些進程。

那么我如何判斷這個應用程序在前臺還是后臺,應用從后臺回到前臺了?

看到一般都是runningProcess或者runningTasks來判斷應用在前臺還是后臺

事實上,Android在SDK 14的時候提供了一個Callback。ActivityLifecycleCallbacks,你可以通過這個Callback拿到App所有Activity的生命周期回調。

public class Application extends android.app.Application {
   private int activityCount;//activity的count數(shù) 
   private boolean isForeground;//是否在前臺
  @Override  public void onCreate() {  
   super.onCreate();    
 registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {  
    @Override      
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
      } 
     @Override      public void onActivityStarted(Activity activity) { 
       activityCount++;      
}      @Override  
                  public void onActivityResumed(Activity activity) { 
     } @Override   
                   public void onActivityPaused(Activity activity) { 
     }   @Override    
                   public void onActivityStopped(Activity activity) { 
      activityCount--;        if(0==activityCount){ 
         isForeground=false;        }
      }  @Override 
                  public void onActivitySaveInstanceState(Activity activity, Bundle outState) { 
     }     @Override 
                   public void onActivityDestroyed(Activity activity) {
      }    });  }  }

這個Callback寫在Application里的,你可以在Application初始化的時候來注冊。

通過這些回調我們可以將這個計數(shù)放在onStart()和onStop()中去。activityCount==1,那么就是前臺,activityCount==0,那就是后臺。這樣判斷很很簡單了吧。

public abstract class BaseClass extends AppCompatActivity { 
判斷當前的應用程序是不是在運行
//需要申請GETTask權限
 private boolean isApplicationBroughtToBackground() { 
    ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);    List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);  
   if (!tasks.isEmpty()) {      ComponentName topActivity = tasks.get(0).topActivity;
      if (!topActivity.getPackageName().equals(getPackageName())) {  
      return true;      }    }    return false;  } 
  public boolean wasBackground= false;  //聲明一個布爾變量,記錄當前的活動背景 
  @Override  public void onPause(){
    super.onPause(); 
    if(isApplicationBroughtToBackground()) 
     wasBackground= true;  }  
public void onResume(){ 
   super.onResume();    
 if(wasBackground){//   
         Log.e("aa","從后臺回到前臺");    }    wasBackground= false;  }}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

相關文章

最新評論