亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android應(yīng)用程序轉(zhuǎn)到后臺(tái)并回到前臺(tái)判斷方法

 更新時(shí)間:2016年11月15日 17:02:16   作者:tigergang  
這篇文章主要介紹了Android應(yīng)用程序轉(zhuǎn)到后臺(tái)并回到前臺(tái)判斷方法的相關(guān)資料,需要的朋友可以參考下

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

那么我如何判斷這個(gè)應(yīng)用程序在前臺(tái)還是后臺(tái),應(yīng)用從后臺(tái)回到前臺(tái)了?

看到一般都是runningProcess或者runningTasks來(lái)判斷應(yīng)用在前臺(tái)還是后臺(tái)

事實(shí)上,Android在SDK 14的時(shí)候提供了一個(gè)Callback。ActivityLifecycleCallbacks,你可以通過(guò)這個(gè)Callback拿到App所有Activity的生命周期回調(diào)。

public class Application extends android.app.Application {
   private int activityCount;//activity的count數(shù) 
   private boolean isForeground;//是否在前臺(tái)
  @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) {
      }    });  }  }

這個(gè)Callback寫在Application里的,你可以在Application初始化的時(shí)候來(lái)注冊(cè)。

通過(guò)這些回調(diào)我們可以將這個(gè)計(jì)數(shù)放在onStart()和onStop()中去。activityCount==1,那么就是前臺(tái),activityCount==0,那就是后臺(tái)。這樣判斷很很簡(jiǎn)單了吧。

public abstract class BaseClass extends AppCompatActivity { 
判斷當(dāng)前的應(yīng)用程序是不是在運(yùn)行
//需要申請(qǐng)GETTask權(quán)限
 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;  //聲明一個(gè)布爾變量,記錄當(dāng)前的活動(dòng)背景 
  @Override  public void onPause(){
    super.onPause(); 
    if(isApplicationBroughtToBackground()) 
     wasBackground= true;  }  
public void onResume(){ 
   super.onResume();    
 if(wasBackground){//   
         Log.e("aa","從后臺(tái)回到前臺(tái)");    }    wasBackground= false;  }}

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

相關(guān)文章

最新評(píng)論