1. 程式人生 > >判斷當前 App 是否被切換到後臺的方法

判斷當前 App 是否被切換到後臺的方法

有兩種方法:

1. 需要許可權  <uses-permission android:name="android.permission.GET_TASKS"/>, 普通App也可獲取,不需要確認,Android 5.1 之後已經廢棄,但是 compileSdkVersion 設為 28 還可以使用,方法如下:

public static boolean isApplicationBroughtToBackground(final Context context) {
        ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningTaskInfo> tasks = am.getRunningTasks(1);
        if (!tasks.isEmpty()) {
            ComponentName topActivity = tasks.get(0).topActivity;
            if (!topActivity.getPackageName().equals(context.getPackageName())) {
                return true;
            }
        }
        return false;
    }

2. 不需要許可權:

public static boolean isBackground(Context context) {
        ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
        List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
        for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
            if (appProcess.processName.equals(context.getPackageName())) {
                if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
                    Log.i("後臺", appProcess.processName);
                    return true;
                }else{
                    Log.i("前臺", appProcess.processName);
                    return false;
                }
            }
        }
        return false;
    }

其他,獲取當前 App 程序名字:

public static String getCurrentProcessName(Context context) {
        try {
            int myid = Process.myPid();
            ActivityManager am = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
            List<ActivityManager.RunningAppProcessInfo> appProcesses = am.getRunningAppProcesses();
            Iterator iter = appProcesses.iterator();

            while(iter.hasNext()) {
                ActivityManager.RunningAppProcessInfo info = (ActivityManager.RunningAppProcessInfo)iter.next();
                if (info.pid == myid) {
                    return info.processName;
                }
            }
        } catch (Exception e) {
            
        }

        return null;
    }

相關推薦

判斷當前 App 是否切換後臺方法

有兩種方法: 1. 需要許可權  <uses-permission android:name="android.permission.GET_TASKS"/>, 普通App也可獲取,不需要確認,Android 5.1 之後已經廢棄,但是 compileSdkVe

32.js 判斷當前頁面是否瀏覽

span bili string key opera ont ber style iter 可以通過document.hidden屬性判斷當前頁面是否是激活狀態。 兼容性:IE10+,Firefox10+,Chrome14+,Opera12.1+,Safari7.1+ 兼容

判斷指定App是否位於前臺的方法

原文地址:http://p.codekk.com/detail/Android/wenmingvs/AndroidProcess 提供6種方法來判斷App處於前臺還是後臺,並且封裝成工具類供大家使用 最後一種方法堪稱android黑科技(非原創),既可以突破Andro

MFC的View子類中判斷當前view是否是活動的方法

CMDIFrameWnd *pFrame = (CMDIFrameWnd *)AfxGetApp()->m_pMainWnd; CMDIChildWnd *pChild = (CMDIChildWnd *)pFrame->GetActiveFrame(); C

判斷當前app是debug還是release

//判斷當前應用是否是debug狀態 public static boolean isApkInDebug(Context context) {   try {          ApplicationInfo info = context.getApplication

【Android】App應用前後臺切換的一種監聽方法

Android本身並沒有提供監聽App的前後臺切換操作的方法。最近看到一種簡單巧妙的方法來監聽前後臺,這裡分享記錄一下。 一、Activity生命週期 我們知道在Android中,兩個Activity,分別為A和B。假設此時A在前臺,當A啟動B時,他們倆之間的生命週期關係如下,可

在java後臺判斷當前時間是上午還是下午?

[java]  view plain  copy //結果為“0”是上午 結果為“1”是下午   public class Gr

移動APP開發工作筆記002---Hbuilder js判斷當前裝置是安卓裝置還是蘋果裝置

   JAVA技術交流QQ群:170933152    js判斷是否為手機系統是安卓還是蘋果,是否為微信瀏覽器                  

判斷當前環境是大端法還是小端法的兩種方法

1:寫一個聯合體判斷 ///一個32位四位元組的整數值,例如:1,實際的計算機編碼表示是0x000000001 ///小端系統中在記憶體中的表示是 01 00 00 00 ///大端系統中在記憶體中的表示是 00 00 00 01 union EndianTest{ int8

C/C++|Qt工作筆記-4種方法判斷當前物件(類)名或標識(繼承發,typeid法,元物件className()法,Q_CLASSINFO法)

回想起3個月前,剛剛參加工作也做過類似的筆記,但只有2種方法,估計剛畢業沒有什麼墨水,經過3個月時間又多了2種方法: 這些方法都可用於RTTI 第一個方法是繼承發(C++中很推薦用這個,感覺用這個結構會很清晰): 執行截圖如下: 原始碼如下: #

android根據當前系統設定語言在app實現中英文切換

今天介紹下安卓開發下面,如何實現中英文相互切換, 一,需要在res下新建資料夾,大陸中文為values-zh-rCN,英文values-en-rUS,更多可以參考http://my.oschina.net/quttap/blog/204499,直接用values-zh,va

判斷當前app是否是debug版本,避免空,不容易出錯。

相信網上有很多的文章都介紹了app是否是debug版本的程式碼,無一我想要的那個。 廢話不說,這個是為了避免異常 public static boolean isAppDebug() { if (StringUtils.isSpace(context.getPacka

ios 快速判斷當前網路狀態(三種方法)

一、利用AFN框架 //1.建立網路狀態監測管理者 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; //2.監聽改變 [manager setReach

今天我坑了 Bigdecimal型別判斷是否等於0(用equals方法的坑)

info.getGiveMoney()=0.00BigDecimal.ZERO.equals(info.getGiveMoney();居然返回 false坑啊Bigdecimal的equals方法不僅僅比較值的大小是否相等,首先比較的是scale(scale是bigdecim

Android - 判斷當前應用執行在前臺還是後臺

判斷android當前執行在前臺還是後臺,有兩種解決方案: 第一種:當app1開啟顯示在最上面頁面時返回true, 但是當app1開啟執行在後臺,app開啟執行在最上面頁面時也返回true。 private boolean isTopActivity() { Activity

註冊JQuery使用ajax呼叫後臺方法判斷使用者名稱、郵箱是否存在,並顯示隱藏提示

JavaScript程式碼 function existUserName(userName, reqUserName) { if (userName.val().length > 0) { $.a

android中判斷當前執行activity名的方法

本文例項講述了android獲取當前執行Activity名字的方法,可以避免即時聊天再出現通知的情況。分享給大家供大家參考。具體方法如下: 最近在做聊天時需要知道當前Activity是哪一個Activity.整理了兩種方法: 第一種:要方便一點(Service中無法使

APP怎麼判斷自己是處於前臺還是後臺

RunningTask 原理: 當一個 App 處於前臺的時候,會處於 RunningTask 的這個棧的棧頂,所以我們可以取出 RunningTask 的棧頂的任務程序,看他與我們的想要判斷的 App 的包名是否相同,來達到效果 缺點: getRunn

android 判斷當前application 是在前臺還是在後臺

    /**      *判斷當前應用程式處於前臺還是後臺      *       * @param context     * @return          */     public static boolean isApplicationBroughtToBa

判斷當前日期為星期幾(Calendar類方法的使用)

        java.util.Calendar(抽象類):它表示一個“日曆”,可以進行日期運算;它是一個抽象類,不能直接使用。我們可以通過它的一個靜態方法:getInstance()獲取一個物件。