如何判断android的activity是不是运行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何判断android的activity是不是运行相关的知识,希望对你有一定的参考价值。

当前的Activity只会有一个的
首先你要知道Activity的四种状态:
Active/Runing 一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。
Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped 状态。
Killed Activity 被系统杀死回收或者没有被启动时处于 Killed 状态。

protected void onStart() 该方法在 onCreate() 方法之后被调用,或者在 Activity 从 Stop 状态转换为 Active 状态时被调用,一般执行了onStart()后就执行onResume()。
protected void onResume() 在 Activity 从 Pause 状态转换到 Active 状态时被调用。
参考技术A 判断android activity是否运行(可见)方法如下:
public static boolean isActivityRunning(Context mContext,String activityClassName)
ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> info = activityManager.getRunningTasks(1);
if(info != null && info.size() > 0)
ComponentName component = info.get(0).topActivity;
if(<span style="font-family: Arial, Helvetica, sans-serif;">activityClassName</span>.equals(component.getClassName()))
return true;


return false;
本回答被提问者采纳

Android - 如何判断Service还在运行

校验某个服务还活着

我们创建一个ServiceUtils的类,里面写一个 isServiceRunning()这样的方法,在里面我们进行判断Service是否是运行状态

首先判断Service是否是运行状态,需要先获取Activity这个管理器

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
然后创建一个List的集合,调用ActivityManager,使用getRunningService(100),这个方法获取到该Activity的服务方法,

List<RunningServiceInfo> info = am.getRunningServices(100);
RunningServiceInfo是一个服务运行的清单文件,通过遍历获取到每个服务的名称,在进行判断传递过来的需要进行判断的Servici的名称,

		for (RunningServiceInfo runningServiceInfo : info) 
			String name = runningServiceInfo.service.getClassName();
			if(name.equals(serviceName))
				return true;
			
		
否则返回false,其中需要注意的是,在传递service这个名称的时候,需要传递的是包名。

以上是关于如何判断android的activity是不是运行的主要内容,如果未能解决你的问题,请参考以下文章

android 判断activity是不是被回收

Android 如何判断一个应用在运行(转)

Android - 如何判断Service还在运行

Android 如何判断多次点击

android新创建Activity是不是需要在Manifest文件中注册,如何进行注册

android新创建Activity是不是需要在Manifest文件中注册,如何进行注册?