1. 程式人生 > >android如何判斷應用是否在前臺?親測有效,簡單。

android如何判斷應用是否在前臺?親測有效,簡單。

public class BaseApplication extends MultiDexApplication implements Application.ActivityLifecycleCallbacks {
private int activityCount;//activity的count數
public static boolean isForeground;//是否在前臺
private static Context context;
private static Resources resource;
private String TAG = "----BaseApplication ";
protected static String BASE_URL = "";
public static Resources getAppResources() {
return resource;
}
@Override
public void onCreate() {
super.onCreate();
CrashHandler.getInstance().setContext(this);
context = getApplicationContext();
resource = context.getResources();
//全域性管理Activity生命週期
registerActivityLifecycleCallbacks(this);
}


public static Context getContext() {
return context;
}


public static void setContext(Context context) {
BaseApplication.context = context;
}


public static boolean debug() {
return BuildConfig.DEBUG;
}


@Override


protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(getApplicationContext());
}
@Override
public File getCacheDir() {
if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
File cacheDir = getExternalCacheDir();
if (cacheDir != null && (cacheDir.exists() || cacheDir.mkdirs())) {
return cacheDir;
}
}
File cacheDir = super.getCacheDir();
return cacheDir;
}


@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
Log.e(TAG+"activityCount","-----onActivityCreated="+activityCount);
}


@Override
public void onActivityStarted(Activity activity) {
activityCount++;
Log.e(TAG+"activityCount","-------onActivityStarted="+activityCount);
}
@Override
public void onActivityResumed(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityResumed="+activityCount);
isForeground();
}


@Override
public void onActivityPaused(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityPaused="+activityCount);
}
@Override
public void onActivityStopped(Activity activity) {
activityCount--;
Log.e(TAG+"activityCount","-------onActivityStopped="+activityCount);
isForeground();
}


/**
* 判斷是否在前臺
*/
private void isForeground() {
if (activityCount>0) {
isForeground = true;
}else {
isForeground=false;
}
Log.e(TAG+"activityCount=",+activityCount+"-------isForeground="+isForeground);
}


@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
Log.e(TAG+"activityCount","-------onActivitySaveInstanceState="+activityCount);
}


@Override
public void onActivityDestroyed(Activity activity) {
Log.e(TAG+"activityCount","-------onActivityDestroyed="+activityCount);


}
}

相關推薦

android如何判斷應用是否在前臺有效簡單

public class BaseApplication extends MultiDexApplication implements Application.ActivityLifecycleCallbacks {private int activityCount;//activity的count數publ

JS實現60s倒計時(有效)及span標簽如何使用和禁用onclick事件

不可用 class body 1.4 復制 fff -h att pan 效果如下圖:點擊按鈕出現60秒倒計時,60s內按鈕不可用,倒計時到了時間方可再次點擊獲取。 另外還有一個知識點,只有input 及button這樣的表單元素有disbale屬性,如何設置是否可用屬性

NLog 日誌框架搭建講解(有效代碼齊全)

希望 auth ble log4 context tar 網上 targe localhost 前言:最近,搭建代碼框架時,想要找一款日誌框架。因為之前都是使用Log4net,所以這次打算使用一款新的NLog嘗試下,感謝網上的這麽多朋友發布的博文,對我有不少的啟發作用。不過

有效解決Can 't connect to local MySQL server through socket '/tmp/mysql.sock '(2) ";

https 轉載 配置 ket 現在 存在 can selector 們的 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 h

UE啟用(有效通過註冊機啟用)

之前一直用的是SublimeText系列,也感覺很好用的,在文字編輯上UE 和 SublimeText感覺差不多,用起來都比較舒服,但是我看中的UE一個強大的功能,可以在編輯時切換行模式和列模式。同時操作多列,雖然很少用到,但是真用的時候就方便很多了。另外UE也有一系列的產品,比如UC就

解除安裝MySQL以及重灌卡到Start Services的解決辦法(有效剛重灌成功)

重灌系統永遠是個好辦法,但是對於我們程式設計師來說只要一想到電腦上的環境變數和其他的配置就蔫了。所以這一條就當作是廢話吧。 一般來說裝MySQL失敗,大部分就是解除安裝不完全的原因,接下來給出完整的解除安裝MySQL的方法: 基本步驟: 1、在環境變數“path”中把“C:\Program Files\My

有效window下oracle匯入很大的dmp檔案到其他資料庫

此次dmp大小大約為20G,匯入到自己建立的表空間 如果匯出資料庫的表空間是AA,那麼再匯入的資料庫得建立一個同名的AA表空間, E:\app\***\oradata\orcl,是本機資料庫的安裝目錄 1://建立表空間,在sql命令視窗下 create tables

MySql in子句 效率低下優化(有效從200秒變1秒)

MySql in子句 效率低下優化 背景:  更新一張表中的某些記錄值,更新條件來自另一張含有200多萬記錄的表,效率極其低下,耗時高達幾分鐘。 update clear_res set candelete=0 where resid in ( select distinct re

java通過JDBC連結SQLServer2012 (有效)並且進行簡單的查增刪改

下面請一字一句地看,一遍就設定成功,比你設定幾十遍失敗,費時會少得多。 首先,在連線資料庫之前必須保證SQL Server 2012是採用SQL Server身份驗證方式而不是windows身份驗證方式。如果在安裝時選用了後者,則重新設定如下: http://blog.1

java Timer定時任務每天的某個時刻開啟(有效直接執行)

這是管理類:import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import ja

java生成二維碼工具類有效轉載請標明出處謝謝!

自動創建 oat for pub 輸出 工具類 port 需要 ase 工具類使用需要在項目中引入二維碼處理所需要的jar包 1.pom.xml首先加入 <!-- https://mvnrepository.com/artifact/com.google.zxing/

JS實現60s倒計時(有效)及span標籤如何使用和禁用onclick事件

效果如下圖:點選按鈕出現60秒倒計時,60s內按鈕不可用,倒計時到了時間方可再次點選獲取。 另外還有一個知識點,只有input 及button這樣的表單元素有disbale屬性,如何設定是否可用屬性的方法一般用$("#id").attr('disbaled','true'

Java 加密解密zip檔案(有效附原始碼和jar包)

有一個朋友問我改怎麼做,到網上搜了一下,果然有類似的文章及大神解決了此類難題,現將程式碼及所需的jar包附上,供大家使用 package test1; import java.io.File;

【轉】Fragment對用戶可見的判斷實踐有效

有一個 跳轉 orm from defaults 才會 over als class 概述 相信很多使用過 Fragment 的朋友都對判斷 Fragment 是否對用戶可見有此疑問,網上有很多文章也介紹得比較片面,只覆蓋到了其中一種情況。我在項目中也有遇到這樣的

eclipse 匯入 android 專案紅叉和紅色感嘆號怎麼解決(有效

解決辦法如下: 第一步:你要確保這個專案沒有問題,有的專案本身就有問題,例如:xml 檔案,java 程式等本身就有錯。 第二步:在 Eclipse 選單中選擇 “Project”----〉Clean 解決不了,下一步 第三步:右鍵選擇專案,選擇 “Resource----〉Clean u

Android SDK Manager國內無法更新的解決方案(有效

轉自 Android SDK Manager國內無法更新的解決方案(親測有效) 現在由於GWF,google基本和咱們說咱見了,就給現在在做Android 或者想學習Android 的朋友帶來了諸多的不便,最簡單的就是Android SDK Manager 你無法更新了。 現在這裡有一

android 如何判斷應用前臺

private boolean isAppOnForeground() { ActivityManager activityManager = (ActivityManager) mContext.getApplicationContext()

Android把專案打包成library--有效

菜雞找了半天沒找到,找到的都是不太清楚,暫且就整理下吧 1.必要的地方。 去build.gradle中,把apply plugin:'com........application',更改為‘com.android.library’;註釋掉defaultConfig節點下的a

Android 自定義AlertDialog 去黑邊終極解決方案(有效!)

問題:自定義AlertDialog出現黑邊 執行程式碼段: View view = View.inflate(context, R.layout.dialog_common, null);

Android Studio xml Unknown attribute 錯誤解決辦法有效

記錄一個問題,Android Studio xml Unknown attribute 問題出現的在xml檔案中,屬性不提示,還被標記為淡黃色 該問題其實很好解決,百度收到一堆解決方式,但是沒有一個有用,最後stackoverflow上有個外國友人給出了答案 It is very