`
zsnlovewl
  • 浏览: 175421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

任务管理器正在运行的程序(1)

阅读更多

RunningTaskInfo

范例说明

Android操作系统并没有提供任务管理器程序,无从得知后台有哪些程序正在运行。本范例是通过ActivityManager.getRunningTasks方法来取得正在运行中的工作程序,并使用ListView将之罗列出来。

这里说的"正在运行"是指单击"按钮"时所获取到的信息,如果放在ListView里的工作已经结束,或者被操作系统回收(Garbage Collection,GC),此时是不会更新运行列表的,而由于没有其他运行中工作的访问权限,因此也不能通过本程序关闭。

在以下范例的Layout里,设计一个TextView、一个ListView以及一个按钮,通过按钮单击的事件,同时向系统ActivityManager取出正在运行的Activity Tasks。

运行结果(见图5-23)

 
图5-23  任务管理器正在运行的程序,包含了正在运行的Activity

范例程序

  1. src/irdc.ex05_21/EX05_21.java 

在访问系统Activity的运行工作时,必须指定要取得的工作数量,因为资源有限,所以在类成员中设置了最多取出30笔的Activity运行工作。

单击按钮之后,便会使得私有类成员mActivityManager重新向系统取得ACTIVITY_SERVICE服务(getSystemService(ACTIVITY_SERVICE);),接着创建List<ActivityManager.RunningTaskInfo>对象,并在构建时,使用getRunningTasks()方法获取正在后台运行中的Activity。

由于取出的对象为List对象,因此程序通过for循环的方式,取出其ActivityManager. RunningTaskInfo里的属性,如Activity的名称(baseActivity.getClassName())及ID(Activity- Manager.RunningTaskInfo.id)。

/* import程序略 */

import android.app.ActivityManager;
import android.widget.ListView;

public class EX05_21 extends Activity {
	private Button mButton01;
	private ListView mListView01;
	private ArrayAdapter<String> aryAdapter1;
	private ArrayList<String> arylistTask;
	/* 类成员设置取回最多几笔的Task数量 */
	private int intGetTastCounter = 30;
	/* 类成员ActivityManager对象 */
	private ActivityManager mActivityManager;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mButton01 = (Button) findViewById(R.id.myButton1);
		mListView01 = (ListView) findViewById(R.id.myListView1);
		/* 单击按钮取得正在后台运行的任务程序 */
		mButton01.setOnClickListener(new Button.OnClickListener() {
			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				try {
					/* ActivityManager对象向系统取得ACTIVITY_SERVICE */
					mActivityManager = (ActivityManager) EX05_21.this
							.getSystemService(ACTIVITY_SERVICE);
					arylistTask = new ArrayList<String>();
					/* 以getRunningTasks方法取回正在运行中的程序TaskInfo */
					List<ActivityManager.RunningTaskInfo> mRunningTasks = mActivityManager
							.getRunningTasks(intGetTastCounter);
					int i = 1;
					/* 以循环及baseActivity方式取得任务名称与ID */
					for (ActivityManager.RunningTaskInfo amTask : mRunningTasks) {
						/* baseActivity.getClassName取出运行任务名称 */
						arylistTask.add("" + (i++) + ": "
								+ amTask.baseActivity.getClassName() + "(ID="
								+ amTask.id + ")");
					}
					aryAdapter1 = new ArrayAdapter<String>(EX05_21.this,
							R.layout.simple_list_item_1, arylistTask);
					if (aryAdapter1.getCount() == 0) {
						/* 当没有任何运行的任务,则提示信息 */
						mMakeTextToast(getResources().getText(
								R.string.str_err_no_running_task).toString(),
								true);
					} else {
						/* 发现后台运行的任务程序,以ListView Widget条列呈现 */
						mListView01.setAdapter(aryAdapter1);
					}
				} catch (SecurityException e) {
					/* 当无GET_TASKS权限时(SecurityException异常)提示信息 */
					mMakeTextToast(getResources().getText(
							R.string.str_err_permission).toString(), true);
				}
			}
		});

		/* 当User在运行任务选择时的事件处理 */
		mListView01
				.setOnItemSelectedListener(new ListView.OnItemSelectedListener() {
					@Override
					public void onItemSelected(AdapterView<?> parent, View v,
							int id, long arg3) {
						// TODO Auto-generated method stub
						/* 由于将运行任务以数组存放,故以id取出数组元素名称 */
						mMakeTextToast(arylistTask.get(id).toString(), false);
					}

					@Override
					public void onNothingSelected(AdapterView<?> arg0) {
						// TODO Auto-generated method stub
					}

				});
		/* 当User在运行任务上单击时的事件处理 */
		mListView01.setOnItemClickListener(new ListView.OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View v, int id,
					long arg3) {
				// TODO Auto-generated method stub
				/* 由于将运行任务以数组存放,故以id取出数组元素名称 */
				mMakeTextToast(arylistTask.get(id).toString(), false);
			}
		});
	}

	public void mMakeTextToast(String str, boolean isLong) {
		if (isLong == true) {
			Toast.makeText(EX05_21.this, str, Toast.LENGTH_LONG).show();
		} else {
			Toast.makeText(EX05_21.this, str, Toast.LENGTH_SHORT).show();
		}
	}
}

 

来自:http://book.51cto.com/art/201007/212202.htm

分享到:
评论

相关推荐

    可以查看程序位置的任务管理器

    进入任务管理器后,我们主要关注“详细信息”或“进程”选项卡,这里列出了所有正在运行的进程。找到你想要查找的程序,通常可以通过进程名称来识别。如果你不清楚进程名,可以参考程序的窗口标题或图标。 在“详细...

    防止C#应用程序被任务管理器结束

    在C#编程中,有时我们需要确保我们的应用程序能够在不受外部因素如任务管理器干扰的情况下持续运行。标题提到的“防止C#应用程序被任务管理器结束”实际上涉及到的是进程保护技术,尤其是针对用户尝试通过任务管理器...

    任务管理器自己仿照windows任务管理器做的程序管理器

    1. **进程管理**:仿制的任务管理器应当能列出所有运行的进程,包括前台应用程序和后台服务。用户应能查看每个进程的详细信息,如进程ID、内存占用、CPU使用率等,并能够终止不需要的进程。 2. **性能监控**:参照...

    C#自编获取Windows任务管理器所有应用程序名称

    在本文中,我们将深入探讨如何使用...通过这种方式,我们能够编写一个C#程序,它可以实时获取Windows任务管理器中运行的所有应用程序的名称。这为系统监控和性能分析提供了一个基础,也可以用于创建更复杂的系统工具。

    实验一操作系统Windows“任务管理器”的进程管理.doc

    1. 任务管理器的功能:任务管理器提供了用户计算机上正在运行的程序和进程的相关信息,包括应用程序、进程和性能三个选项卡。 2. 应用程序选项卡:显示正在运行程序的状态,用户能够结束、切换或者启动程序。 3. ...

    任务管理器程序

    《任务管理器程序详解》 任务管理器程序,顾名思义,是一种模仿Windows操作系统内置任务管理器的应用软件,它采用C++编程语言,并利用Microsoft Foundation Classes (MFC)库进行开发。MFC是微软为Windows环境提供的...

    任务管理器加密任务管理器加密

    真正的“任务管理器加密”可能涉及对任务管理器程序本身进行加密处理,使其在未解密的情况下无法运行。这通常需要编程知识,涉及到对二进制文件的处理和密码学原理。 此外,有些安全软件或系统优化工具提供更高级的...

    C++任务管理器源程序.zip

    任务管理器是操作系统中的一个重要组件,它允许用户监控和控制正在运行的进程、服务、应用程序,查看系统性能信息,以及进行其他系统管理任务。 在Windows操作系统中,任务管理器是一个常见的例子,它提供了对...

    简单任务管理器 进程查看

    在IT领域,任务管理器是操作系统中的一个核心组件,它允许用户查看并控制正在运行的进程,以及管理系统资源。在本例中,我们讨论的是一个简单的任务管理器,它的主要功能包括查看当前系统中的进程以及根据需要终止...

    给任务管理器加密码 加密码 任务管理器

    网吧、学校等公共场合的计算机,我们不希望用户使用任务管理器乱杀进程,但是我们又不能不让用户使用任务管理器,这个程序就是专为解决这个问题而编写的。 程序比较简单,所以没有提供卸载程序,如果安装后不想用了...

    自动运行任务计划

    自动运行任务计划的核心是任务调度器,这是一个内置在操作系统中的组件,用于管理、安排和执行预定的任务。在Windows系统中,这个组件被称为“任务计划程序”;在Linux或Unix系统中,它可能是“Cron”服务。这些工具...

    资源管理器与任务管理器

    **任务管理器**是另一个重要的系统工具,它提供了一个窗口,让用户可以看到正在运行的应用程序、进程和服务,以及系统性能的实时信息。通过任务管理器,用户可以结束不响应的程序,查看内存和CPU的使用情况,甚至...

    禁止进程结束 禁用任务管理器结束程序

    标题中的“禁止进程结束 禁用任务管理器结束程序”指的是在编程中实现的一种技术,目的是保护特定的进程不被用户或系统中的其他应用程序(如任务管理器)终止。通常,这种技术在开发安全软件或者需要确保核心服务...

    任务管理器

    "任务管理器"是Windows操作系统中的一个重要工具,它允许用户监控和管理计算机的运行状态,包括查看当前运行的进程、应用程序、性能数据以及系统服务等。在本文中,我们将深入探讨任务管理器的功能、用途以及如何...

    改造任务管理器改造任务管理器

    在IT领域,任务管理器是操作系统中的一个核心组件,它允许用户监视和控制正在运行的进程,查看系统性能,管理启动项,以及结束不响应的应用程序。本文将深入探讨任务管理器的重要性和改造的可能性,主要关注如何通过...

    系统任务管理器程序

    系统任务管理器程序是计算机操作系统中的一个重要工具,它允许用户监控和管理正在运行的应用程序、进程以及系统资源的使用情况。在本例中,我们提到的"系统任务管理器程序"是一个具有类似功能的自定义应用程序,它...

    隐藏任务栏应用程序,如果你不想别人看到你任务栏运行的软件,这款是很好的奥

    标题中的“隐藏任务栏应用程序”指的是能够帮助用户在Windows操作系统中隐藏任务栏上正在运行的应用程序的工具。这种工具通常用于隐私保护或者是为了避免他人窥探你的工作内容,例如在公共场合使用电脑时,可能不...

    VB编写程序在任务管理器和进程中隐藏

    任务管理器是Windows操作系统提供的一种工具,用于监视和管理正在运行的应用程序和后台服务。而“进程”则是操作系统中执行的程序实例,每个进程都有自己的内存空间,相互独立运行。 在VB中,隐藏程序于任务管理器...

    基于MFC做的Windows任务管理器

    在Windows操作系统中,任务管理器是一个不可或缺的工具,它提供了查看和控制正在运行的应用程序、进程、服务、性能监控以及启动和关闭计算机的功能。本文将深入探讨如何利用Microsoft Foundation Classes (MFC) 框架...

    如何解决任务管理器打不开与任务管理器被禁用.docx

    任务管理器是 Windows 操作系统中一个非常重要的工具,它提供了有关计算机性能的信息,并显示了计算机上所运行的程序和进程的详细信息。如果连接到网络,那么还可以查看网络状态并迅速了解网络是如何工作的。然而,...

Global site tag (gtag.js) - Google Analytics