ActivityManager(四)--判断应用是否在前台运行

MainActivity如下:

package cn.testforeground;
import java.util.List;
import android.os.Bundle;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningTaskInfo;
import android.content.ComponentName;
import android.content.Context;
/**
 * Demo描述:
 * 判断当前应用是否在前台运行
 *
 * 注意权限:
 *  <uses-permission android:name ="android.permission.GET_TASKS" />
 */
public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		isRunningForeground();
	}

	public boolean isRunningForeground(){
		String packageName=getPackageName(this);
		String topActivityClassName=getTopActivityName(this);
		System.out.println("packageName="+packageName+",topActivityClassName="+topActivityClassName);
		if (packageName!=null&&topActivityClassName!=null&&topActivityClassName.startsWith(packageName)) {
			System.out.println("---> isRunningForeGround");
			return true;
		} else {
			System.out.println("---> isRunningBackGround");
			return false;
		}
	}

	public  String getTopActivityName(Context context){
		String topActivityClassName=null;
		 ActivityManager activityManager =
		(ActivityManager)(context.getSystemService(android.content.Context.ACTIVITY_SERVICE )) ;
	     List<RunningTaskInfo> runningTaskInfos = activityManager.getRunningTasks(1) ;
	     if(runningTaskInfos != null){
	    	 ComponentName f=runningTaskInfos.get(0).topActivity;
	    	 topActivityClassName=f.getClassName();
	     }
	     return topActivityClassName;
	}

	public String getPackageName(Context context){
		 String packageName = context.getPackageName();
		 return packageName;
	}
}

 

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="判断当前应用是否在前台运行"
        android:layout_centerInParent="true"
        android:textSize="20sp"
     />

</RelativeLayout>

 

时间: 2024-08-01 05:23:36

ActivityManager(四)--判断应用是否在前台运行的相关文章

Android判断App是否在前台运行

// Android开发中,有时候需要判断App是否在前台运行. 代码实现如下: private boolean isRunningForeground(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); ComponentName cn = am.getRunningTasks(1).get(0).topActivity; St

android 如何判断程序是否在前台运行

protected static boolean isTopActivity(Activity activity){ String packageName = "xxxxx"; ActivityManager activityManager = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> tasksInfo = activityMan

Android 判断app是否在前台还是在后台运行

Android 判断app是否在前台还是在后台运行,直接看代码,可直接使用. [java] view plaincopy public static boolean isBackground(Context context) {           ActivityManager activityManager = (ActivityManager) context                   .getSystemService(Context.ACTIVITY_SERVICE);  

Android判断App前台运行还是后台运行(运行状态)_Android

本文通过图文并茂的方式给大家介绍android判断app状态的相关内容,具体详情如下所示: 要了解这块,首先需要明白一些概念,app,process,task 1.process就是进程,是linux的概念. 2.一般一个app拥有一个uid,运行在一个进程里,如果app中给service等定义不同的uid,那Service就运行在另外一个进程里,也就是说uid就相当于进程的id一样,一个uid就代表一个进程:也可以几个app定义一个uid,那他们就运行在一个进程里了. 3.task是andro

Android判断App前台运行还是后台运行(运行状态)

本文通过图文并茂的方式给大家介绍android判断app状态的相关内容,具体详情如下所示: 要了解这块,首先需要明白一些概念,app,process,task 1.process就是进程,是linux的概念. 2.一般一个app拥有一个uid,运行在一个进程里,如果app中给service等定义不同的uid,那Service就运行在另外一个进程里,也就是说uid就相当于进程的id一样,一个uid就代表一个进程:也可以几个app定义一个uid,那他们就运行在一个进程里了. 3.task是andro

Android实现判断某个服务是否正在运行的方法_Android

本文实例讲述了Android实现判断某个服务是否正在运行的方法.分享给大家供大家参考,具体如下: /** * 判断某个服务是否正在运行的方法 * * @param mContext * @param serviceName * 是包名+服务的类名(例如:net.loonggg.testbackstage.TestService) * @return true代表正在运行,false代表服务没有正在运行 */ public boolean isServiceWork(Context mContex

APP从后台到前台运行的时候先进入解锁界面如何解决

问题描述 APP从后台到前台运行的时候先进入解锁界面如何解决 应用场景: 当APP在后台运行超过1分钟回到前台 或者停留在一个界面上超过1分钟没有交互 此时重新返回这个APP的时候就需要先进入解锁界面 类似以前支付宝的那种(现在没有了) 解决方案 自己周期性写一个配置文件,写入时间,再次激活的时候,读取配置文件,判断当前时间差是否超过1分钟,是就显示解锁界面

Android创建前台运行的Service

Service如果要防止尽可能不被系统杀掉,需要设置为在前台运行. 由于设置前台运行service的方法在2.0之前和2.0之后有所变化. 所以需要根据不同的版本进行区分:或者完全使用反射机制来处理,这样只要有相应的方法就可以使用,否则使用其他版本的方法. 下面是一个设置servcie前台运行的例子,参考了API中对Service的说明. http://developer.android.com/reference/android/app/Service.html# [java] view pl

win10应用开发——如何判断应用是在手机上运行还是电脑上运行

原文:win10应用开发--如何判断应用是在手机上运行还是电脑上运行     在进行uwp应用开发的时候, 有时我们需要知道自己的应用是在手机端运行还是在桌面端运行,那么通过以下的api就可以进行判断:   Windows.System.Profile.AnalyticsInfo.VersionInfo.DeviceFamily 如图所示:   --IT追梦园