android判断前台运行当前App是在前台还是在后台

| 漏洞检测 |
| 隐藏捆绑 |
Android 判断app是否在前台还是在后台运行
Android 判断app是否在前台还是在后台运行,直接看代码,可直接使用。 public static boolean isBackground(Context context) {ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);List appProcesses
app在还,直接看代码,可直接使用。
public static boolean isBackground(Context context) {
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
List appProcesses = activityManager
.getRunningAppProcesses();
for (RunningAppProcessInfo appProcess : appProcesses) {
if (appProcess.processName.equals(context.getPackageName())) {
BACKGROUND=400 EMPTY=500 FOREGROUND=100
GONE=1000 PERCEPTIBLE=130 SERVICE=300 ISIBLE=200
Log.i(context.getPackageName(), "此appimportace ="
+ appProcess.importance
+ ",context.getClass().getName()="
+ context.getClass().getName());
if (appProcess.importance != RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
Log.i(context.getPackageName(), "处于"
+ appProcess.processName);
Log.i(context.getPackageName(), "处于"
+ appProcess.processName);
(责任编辑:幽灵学院)
------分隔线----------------------------
今天有空复习了一下Android中AIDL的使用,由于平时开发中使...
在之前的文章深入探究了Handler,我们知道了Android的消息机...
?之前一段时间,我都在研究Android自定义View的相关知识,随...
什么是ViewPager,刚一听到这个词,我们可能感觉很奇怪,但...
Only the original thread that created a view hierarchy c...
在这里写出我们项目中常用的两种弹窗方式,底部弹窗以及中间...
工作日:9:00-21:00
周 六:9:00-18:00
&&扫一扫关注幽灵学院Android判断当前App是在前台还是在后台
字体:[ ] 类型:转载 时间:
这篇文章主要为大家详细介绍了Android判断当前App是在前台还是在后台的方法,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了Android判断当前App状态的具体实现代码,供大家参考,具体内容如下
*判断当前应用程序处于前台还是后台
* @param context
public static boolean isApplicationBroughtToBackground(final Context context) {
ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
List&RunningTaskInfo& tasks = am.getRunningTasks(1);
if (!tasks.isEmpty()) {
ComponentName topActivity = tasks.get(0).topA
if (!topActivity.getPackageName().equals(context.getPackageName())) {
上面这段代码是需要一个权限的:
& uses-permission Android:name=”android.permission.GET_TASKS” /&
下面这段代码是我最新发现,无需权限,妥妥滴:
不过我稍微做了调整,后台分为:service后台和activity后台,这里认为不是前台的都认为后台。
&•service运行在后台,appProcess.importance = IMPORTANCE_SERVICE,
&•没有service运行的后台,&
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_FOREGROUND) {
System.out.print(String.format("Foreground App:", appProcess.processName));
System.out.print("Background App:"+appProcess.processName);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具判断App运行是否在前台 - 行殇 - 博客园
转自://check-if-app-is-running-forground/
在一些场景中,经常会需要判断App是否在后台运行,比如是否显示解锁界面,收到新消息是否显示Notification等。
从网上找到的方法大部分都是通过判断runningAppProcess里面是否有该app的进程这样来判断app是否还在运行,但是这种方法有种windows资源管理器的既视感。
经过查找发现,Android在SDK 14的时候提供了一个Callback。ActivityLifecycleCallbacks,你可以通过这个Callback拿到App所有Activity的生命周期回调。看图:
这个Callback写在Application里的,你可以在Application初始化的时候来注册。我们可以写个单例类来cache这些status。这里我叫它AppStatusTracker。在Application的onCreate()里让AppStatusTracker注册ActivityLifecycleCallbacks。
从WelcomeActivity跳转到GestureActivity。回调方法如下:A.onPause() -& B.onStart() -& B.onResume() -& A.onStop()
通过这些回调我们可以在onStart()和onStop()中进行计数,如果start就+1,onstop就-1,这样可以根据计数是否为0来判断是否是前台了。
现在再说,什么情况下来显示手势解锁界面。我的需求是当用户锁屏后再解锁或者切换到后台10分钟后显示手势解锁界面。我们拆分下需求,先说锁屏,解锁。
这个是有BroadCastReciever来接收的,注册下就可以了,每次收到锁屏ACTION_SCREEN_OFF的action时,将AppStatusTracker里的isScreenOff设置为true。当收到解锁ACTION_SCREEN_ON再将isScreenOff设为false。
再说切换到后台10分钟后显示手势解锁。这个只需要在onActivityStop()时更新下lastBackgroudTimestamp就可以了。
下面是完整的代码:
public class AppStatusTracker implements Application.ActivityLifecycleCallbacks {
/** 切换到后台的时间戳*/
public long screenOnTime = 0l;
/** 当前是否有activity在运行 */
public int count = 0;
/** 屏幕点亮*/
public boolean screenOn = true;
/** 是否是在后台*/
public boolean isBackGround = false;
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
LogUtil.e("onActivityCreated");
public void onActivityStarted(Activity activity) {
LogUtil.e("onActivityStarted");
LogUtil.e(activity.getClass().getName());
public void onActivityResumed(Activity activity) {
LogUtil.e("onActivityResumed");
isBackGround = false;
screenOnTime = 0l;
public void onActivityPaused(Activity activity) {
LogUtil.e("onActivityPaused");
public void onActivityStopped(Activity activity) {
LogUtil.e("onActivityStopped");
if(count == 0){
isBackGround = true;
screenOnTime = System.currentTimeMillis();
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
LogUtil.e("onActivitySaveInstanceState");
public void onActivityDestroyed(Activity activity) {
LogUtil.e("onActivityDestroyed");
public class MyApplication extends android.support.multidex.MultiDexApplication {
public static AppStatusTracker tracker = new AppStatusTracker();
private ScreenOnOffReceiver screenOnOffReceiver = new ScreenOnOffReceiver();
public void onCreate() {
super.onCreate();
x.Ext.init(this);
x.Ext.setDebug(true); // 是否输出debug日志
LogUtil.customTagPrefix="lpj";
registerActivityLifecycleCallbacks(tracker);
registerScreenReceiver();
private void registerScreenReceiver(){
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(screenOnOffReceiver,intentFilter);13190人阅读
Android开发(1715)
Android 判断app是否在前台还是在后台运行,直接看代码,可直接使用。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:7341896次
积分:67859
积分:67859
排名:第19名
原创:677篇
转载:1631篇
评论:2155条
赠人玫瑰,手有余香。分享技术,传递快乐。
如果您认为本博客不错,读后觉得有收获,不妨打赏赞助我一下,让我有动力继续写出高质量的博客。
推荐博客:
文章:29篇
阅读:66541
文章:74篇
阅读:254085}

我要回帖

更多关于 ios 判断前台后台 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信